ondragleave有没有可行的解决方案?
.addEventListener('ondragleave',function(){
console.log('nothing');
});
这不起作用。我做错了什么?
谢谢;)
答案 0 :(得分:1)
尝试
.addEventListener ("dragend",function(){
console.log('nothing');
});
编辑:这取决于您使用的浏览器。信息来自http://help.dottoro.com/ljsluknm.php。不同的浏览器使用不同的事件名称。
var source = document.getElementById ("source");
var target = document.getElementById ("target");
if (source.addEventListener) { // all browsers except IE before version 9
// Firefox from version 3.5, Google Chrome, Safari, Internet Exlorer
source.addEventListener ("dragstart", DumpInfo, false);
// Firefox before version 3.5
source.addEventListener ("draggesture", DumpInfo, false);
// Firefox, Google Chrome, Safari, Internet Exlorer
source.addEventListener ("drag", DumpInfo, false);
// Firefox, Google Chrome, Safari, Internet Exlorer
source.addEventListener ("dragend", DumpInfo, false);
// Firefox, Google Chrome, Safari, Internet Exlorer
target.addEventListener ("dragenter", DumpInfo, false);
// Firefox, Google Chrome, Safari, Internet Exlorer
target.addEventListener ("dragover", DumpInfo, false);
// Firefox from version 3.5, Google Chrome, Safari, Internet Exlorer
target.addEventListener ("dragleave", DumpInfo, false);
// Firefox
target.addEventListener ("dragexit", DumpInfo, false);
// Firefox from version 3.5, Google Chrome, Safari, Internet Exlorer
target.addEventListener ("drop", DumpInfo, false);
// Firefox before version 3.5
target.addEventListener ("dragdrop", DumpInfo, false);
}
else {
if (source.attachEvent) { // IE before version 9
source.attachEvent ("ondragstart", DumpInfo);
source.attachEvent ("ondrag", DumpInfo);
source.attachEvent ("ondragend", DumpInfo);
target.attachEvent ("ondragenter", DumpInfo);
target.attachEvent ("ondragover", DumpInfo);
target.attachEvent ("ondragleave", DumpInfo);
target.attachEvent ("ondrop", DumpInfo);
}
}
答案 1 :(得分:1)
前一个答案不正确,ondragleave和ondragend是两个不同的事件,它们在不同的元素上被触发。 什么brenjt可能意味着尝试ondragexit事件,这是在Mozilla中调用ondragleave< 3.5。
当从可以接收放置事件的元素中拖出时,会触发ondragleave。
ondragend在ondragstart触发的元素上被触发。
例如参见:https://developer.mozilla.org/en-US/docs/DragDrop/Drag_Operations
你的ondragleave没有被解雇的原因可能是
.addEventListener('ondragleave',function(){
应该是
.addEventListener('dragleave',function(){
在我读过的文档中,例如在http://www.quirksmode.org/js/events_advanced.html使用.addEventListener()时,指定的事件没有“on”。
PS。 作为旁注,Mozilla 22似乎也会在一些超时悬停在可放置元素之后触发ondragleave事件。 DS。