简体   繁体   English

丢弃事件不防止默认

[英]Drop Event Not Preventing Default

I've the following: http://jsfiddle.net/KywJT/我有以下内容: http : //jsfiddle.net/KywJT/

function dragEnter(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    $(evt.target).addClass('over');
}

function dragLeave(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    $(evt.target).removeClass('over');
}

function drop(evt) {
   evt.stopPropagation();
   evt.preventDefault();
   $(evt.target).removeClass('over');
}

jQuery( function ( $ ) {

  var $box = $( "#box" );
  $box.bind("dragenter", dragEnter);
  $box.bind("dragleave", dragLeave);
  $box.bind("drop", drop);
});

I'm using Chrome version 24.0.1312.52 m and last jQuery (1.8.3).我使用的是 Chrome 版本 24.0.1312.52 m 和最后一个 jQuery (1.8.3)。 When I drop a file into the box, browser is not preventing default beaviour.当我将文件放入框中时,浏览器不会阻止默认行为。 Can you please help me?你能帮我么?

PS dragexit is deprecated correct? PS dragexit 已弃用是否正确?

If you want the drop event to be fired in Google Chrome, a dragover listener has to be defined before, even if the function doesn't do anything at all.如果您希望在 Google Chrome 中触发 drop 事件,则必须先定义一个 dragover 侦听器,即使该函数根本不执行任何操作。 I don't know why, it's weird... but clearly identified and easy to reproduce :) Lost 2 hours on that sh*t yesterday :/ hope this helps我不知道为什么,这很奇怪……但很清楚,很容易重现:) 昨天在那个 sh*t 上浪费了 2 个小时:/希望这会有所帮助

This should fix the issue for you.这应该为您解决问题。

jQuery( function ( $ ) {
    var $box = $( "#box" );
    $box.bind("dragenter", dragEnter);
    $box.bind("dragleave", dragLeave);
    $box.bind("drop", drop);

    $(document).bind('dragover', function (e) {
         e.preventDefault();
    });
});

This is an old question but I used answers to this question and wrote the code I want:这是一个老问题,但我使用了这个问题的答案并编写了我想要的代码:

HTML: HTML:

<div id="image_holder" ondragover="dragEnter(this,event)"></div>

jQuery: jQuery:

function dragEnter(a,evt) {
    evt.stopPropagation();
    evt.preventDefault();
    $(evt.target).addClass('over');

    $(a).bind("dragleave", dragLeave);
    $(a).bind("drop", drop);

    $(document).bind('dragover', function (e) {
        e.stopPropagation();
        e.preventDefault();
    });
    return false;
}

function dragLeave(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    $(evt.target).removeClass('over');
    return false;
}

function drop(evt) {
    evt.stopPropagation();
    evt.preventDefault();
    $(evt.target).removeClass('over');
}

This has the privilege you can use it easily for different elements in page.这具有您可以轻松将其用于页面中不同元素的特权。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM