2013-01-11 48 views
1

的Jquery:防止默认操作。只有在工作铬

$(document).ready(function() { 
   $('input[type=file]').uploadImage(); 
   jQuery.event.props.push('dataTransfer'); 
   $(".upload-cont").bind('dragenter', function (e) { 
      $(".upload-cont").css("border", "1px dashed black;"); 
   }); 
   $(".upload-cont").bind('drop', function (e) { 
      var files = e.dataTransfer.files; 
      e.preventDefault(); 
   }); 
   $("body").bind('drop', function (e) { 
      e.preventDefault(); 
   }); 
}); 

在Firefox 17浏览器中拖拽并从桌面拖放文件到浏览器中的图像将在另一个页面加载时8。我添加了可以在Chrome中完美工作的preventDefault()。可以做什么以便在ff即浏览器中阻止该操作。

回答

5

尝试更改代码。

$('body').on('dragover drop', function(e){ 
    e.preventDefault(); 
}); 

对于某些浏览器来说,dragover事件也必须被取消,才能听取下拉。引述mdn

的侦听器dragenter和dragover事件用于指示 有效的放置目标,那就是,当拖动项地方可能 下降。网页或应用程序的大部分区域不是有效的地方 以删除数据。因此,这些事件的默认处理是不允许 下降。

如果您想允许放置,您必须阻止 取消该事件的默认处理。您可以通过从属性定义的事件侦听器中返回 或通过调用事件的 event.preventDefault方法来执行此操作。后者在单独的脚本中定义的 函数中可能更加可行。

+0

很高兴帮助。我最近有一个类似的问题。 –

+0

这将是一个更好的答案,如果它包含关于为什么OP的代码被破坏以及为什么这会修复它的解释。 – Sparky

+0

@Sparky你是对的,我把它添加到答案中。我花了一分钟才找到源代码。 :) –