【问题标题】:Prevent the default action. Working only in chrome防止默认操作。仅在 chrome 中工作
【发布时间】:2012-12-26 06:48:00
【问题描述】:

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

【问题讨论】:

    标签: jquery drag-and-drop preventdefault


    【解决方案1】:

    尝试将代码更改为。

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

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

    dragenter 和 dragover 事件的监听器用于指示 有效的放置目标,即可能被拖动的项目的位置 掉了。网页或应用程序的大部分区域都不是有效位置 删除数据。因此,这些事件的默认处理是不 允许掉落。

    如果你想允许丢弃,你必须阻止默认处理 取消活动。您可以通过从 一个属性定义的事件监听器,或者通过调用事件的 event.preventDefault 方法。后者可能更可行 函数在单独的脚本中定义。

    【讨论】:

    • 很高兴为您提供帮助。我最近遇到了类似的问题。
    • 如果它包含关于为什么 OP 的代码被破坏以及为什么修复它的解释,那将是一个更好的答案。
    • @Sparky 你是对的,我将它添加到答案中。我花了一分钟才找到源头。 :)
    猜你喜欢
    • 2011-08-23
    • 2011-06-29
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多