1

查询:

$(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、explorer 8 中,当将文件从桌面拖放到浏览器中时,图像将加载到另一个页面中。我添加了 preventDefault() ,它在 chrome 中完美运行。可以做些什么来阻止在 ff 中执行该操作,即浏览器。

4

1 回答 1

5

尝试将代码更改为。

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

某些浏览器也必须取消拖动事件才能收听拖放。引用mdn

dragenter 和 dragover 事件的侦听器用于指示有效的放置目标,即可以放置拖动项目的位置。网页或应用程序的大多数区域都不是放置数据的有效位置。因此,这些事件的默认处理是不允许丢弃。

如果要允许放置,则必须通过取消事件来防止默认处理。您可以通过从属性定义的事件侦听器返回 false 或调用事件的 event.preventDefault 方法来做到这一点。后者在单独脚本中定义的函数中可能更可行。

于 2013-01-11T16:28:57.827 回答