2010-07-29 75 views
2

我正在制作HTML5技术演示作品,其中用户可以将“应用程序”从菜单拖到屏幕上,并且它们会显示在可移动和可重新定义的iframe上这一页。这一切在Firefox中运行良好,但是当我在Chrome中尝试它时(它支持更多的HTML5功能),它会尝试在我所在的任何目录中加载URL“undefined”。这是我的代码。jQuery .attr()undefined only in Chrome

$(".menu-app") 
       .attr("draggable", "true") 
       .bind("dragstart", function(ev) { 
        var dt = ev.originalEvent.dataTransfer; 
        var src = $(this).attr("value"); 
        dt.setData("src", src); 
        return true; 
        }) 
       .bind("dragend", function() { 
        return false; 
        }); 
      $("#content") 
       .bind("dragenter", function() { 
        return false; 
        }) 
       .bind("dragleave", function() { 
        return false; 
        }) 
       .bind("dragover", function() { 
        return false; 
        }) 
       .bind("drop", function(ev) { 
         var dt = ev.originalEvent.dataTransfer; 
         $("#content").html($("#content").html()+ 
          "<div class='app'><iframe width='100%' height='100%' frameborder='0' src='"+ 
           dt.getData("src")+"'></iframe></div>"); 
      // Make application windows draggable and resizable 
      $(".app").resizable({grid:20}).draggable({grid:[20,20]}).addClass("ui-widget-content"); 
        return false; 
        }); 
+1

draggable是一个“标准”HTML属性。请参阅http://www.w3.org/TR/html5/dnd.html#the-draggable-attribute – 2010-07-29 18:02:22

回答

1

原来这个问题并不在jQuery中。这是因为chrome只支持拖放两种数据类型:“Url”和“Text”。切换dt.setData("src", src);dt.setData("Text", src);解决了这个问题。