2010-07-29 2 views
2

Я создаю техническую демонстрацию HTML5 для работы, в которой пользователь может перетащить «приложения» из меню на экран, и они появятся в перемещаемых и повторно отображаемых iframe страница. Все это хорошо работает и хорошо работает в Firefox, но когда я пытаюсь использовать его в Chrome (который поддерживает больше возможностей HTML5), он пытается загрузить url «undefined» в любом каталоге, в котором я нахожусь. Вот мой код.jQuery .attr() undefined только в 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 –

ответ

1

Оказывается, проблема не была в jQuery. Это связано с тем, что хром поддерживает только 2 типа данных с перетаскиванием: «Url» и «Text». Переключение dt.setData("src", src); на dt.setData("Text", src); решило проблему.

Смежные вопросы