デスクトップからドロップファイルを取得するために、HTML5 DnDイベントに登録されています。 私が見る問題は、私はいつもdropイベントの直前に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();
}
これはデザインとして動作していますか、何か不足していますか?
しかし、私はそれを必要とし、それが何か価値を追加しなかった場合、私は彼らがそれを追加していないと思います。オブジェクトがドラッグゾーンからドラッグされたことを知る必要があります。これは、このイベントが想定していることです。しかし、何らかの理由で、ユーザーがドロップゾーンにオブジェクトをドロップしても、起動されています。マニュアルを間違って読まない限り、バグのように聞こえます。 – Amir
@エイミール:私はあなたが言ったので、あなたはそれが必要ではないと言った理由は: "あなたはドロップレットを指標として使用してドロップが起こらなかったなら..."。私が言ったように、これは落ちることがないことを示すものではありません。ドラッグ可能なオブジェクトが別のオブジェクトから引き出されたというインジケータとして確かに使用することができます...しかし、私が言ったように、それはドロップが起こったことを意味しません。 – Gerrat