Javascript Drop事件不阻止默认设置
我有以下建议: 我使用的是Chrome版本24.0.1312.52M和最后一个jQuery(1.8.3)。 当我将文件放入框中时,浏览器不会阻止默认beaviour。 你能帮帮我吗Javascript Drop事件不阻止默认设置,javascript,jquery,google-chrome,drag-and-drop,jquery-events,Javascript,Jquery,Google Chrome,Drag And Drop,Jquery Events,我有以下建议: 我使用的是Chrome版本24.0.1312.52M和最后一个jQuery(1.8.3)。 当我将文件放入框中时,浏览器不会阻止默认beaviour。 你能帮帮我吗 p.S.dragexit已被弃用,对吗?这将为您解决问题 jQuery( function ( $ ) { var $box = $( "#box" ); $box.bind("dragenter", dragEnter); $box.bind("dragleave", dragLeave);
p.S.dragexit已被弃用,对吗?这将为您解决问题
jQuery( function ( $ ) {
var $box = $( "#box" );
$box.bind("dragenter", dragEnter);
$box.bind("dragleave", dragLeave);
$box.bind("drop", drop);
$(document).bind('dragover', function (e) {
e.preventDefault();
});
});
如果您希望在Google Chrome中触发drop事件,则必须在之前定义dragover侦听器,即使该函数根本不执行任何操作。我不知道为什么,这很奇怪。。。但识别清晰且易于复制:)
昨天在那个sh*t上损失了2个小时:/hope this help这是一个老问题,但我使用了这个问题的答案并编写了我想要的代码: HTML:
您可以轻松地将其用于页面中的不同元素。它适用于我,我没有修改任何一行代码。。在我更新Chrome之前,它一直在工作:|
版本24.0.1312.52 m
现在它只是在浏览器中打开文件,我没有疯。有什么办法吗?@user1824269我不确定。。还在玩弄它。它刚刚开始工作,准备粘贴我的Chrome浏览器版本。。但它说我需要重新启动浏览器来更新。。一旦我重新启动,它就不再工作了。您的解决方案在JSFIDLE上似乎不起作用。顺便说一句,要停止冒泡,需要使用e.stopPropagation(),而不是在JSFIDLE之外为我工作的e.preventDefault(),我认为这是因为Dragver事件。我应该添加停止传播方法吗?是的。你不必防止跌落。更新了我的答案。我只是在打字。我没有试过(我希望我能多次投票,谢谢!
jQuery( function ( $ ) {
var $box = $( "#box" );
$box.bind("dragenter", dragEnter);
$box.bind("dragleave", dragLeave);
$box.bind("drop", drop);
$(document).bind('dragover', function (e) {
e.preventDefault();
});
});
<div id="image_holder" ondragover="dragEnter(this,event)"></div>
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');
}