我已註冊到HTML5 DnD事件以便從桌面獲取拖放文件。 我看到的問題是,我總是在丟棄事件之前得到dragleave事件。 在規範中沒有提到類似這樣的事情 - 如果你使用dragleave作爲沒有發生掉落的指標,那麼它就會混淆邏輯。在html5中使用dragleave後下降
var dropbox = document.getElementById("dropzone");
dropbox.addEventListener("dragenter", dragEnter, false);
dropbox.addEventListener("dragleave", dragLeave, false);
dropbox.addEventListener("dragover", dragOver, false);
dropbox.addEventListener("drop", drop, false);
function dragEnter(e){
console.log("dragEnter ",e);
dropbox.style.backgroundColor = "red";
e.stopPropagation();
e.preventDefault();
}
function dragLeave(e){
console.log("dragleave");
dropbox.style.backgroundColor = "white";
e.stopPropagation();
e.preventDefault();
}
function dragOver(e){
console.log("dragOver ",e);
e.stopPropagation();
e.preventDefault();
}
function drop(e){
console.log("drop ",e);
var files = e.dataTransfer.files;
var count = files.length;
e.stopPropagation();
e.preventDefault();
}
這是作爲設計工作還是我錯過了什麼?
但我確實需要它,如果它沒有添加任何值,那麼我想他們沒有添加它。我需要它知道一個對象被拖出了拖動區域,這是這個事件假設要做的事情。但由於某種原因,即使用戶將該對象放置在放置區域上,它也會被解僱 - 對我來說,這聽起來像是一個bug,除非我閱讀手冊錯誤。 – Amir
@Amir:我說你不需要它的原因是因爲你說:「如果你用dragleave作爲一個指標,沒有下降發生......」。正如我所說,這並不表示沒有下降。你當然可以用它來表示「一個可拖動的對象被拖出另一個對象」......但正如我所說的那樣,這並不意味着沒有下降發生。 – Gerrat