13

違いは何ですか

event.originalEvent.dataTransfer.files

event.dataTransfer.files

???

ドラッグアンドドロップでは、2番目のコードが機能せず、未定義であるため、最初のコードを使用する必要がありました。

4

1 に答える 1

40

jQuery はブラウザ イベント オブジェクトを渡すのではなく、jQuery イベント オブジェクトを渡します。.originalEventjQuery イベント オブジェクト内のプロパティによって、元の変更されていないイベント オブジェクトにアクセスできます。その後、通常どおり続行できます。

コードでは:

jQuery イベント モデル:

$(document).on("drop dragend dragstart dragenter dragleave drag dragover", function(event) {
    event.preventDefault();
    if (event.type === "drop") {
        alert(event.originalEvent.dataTransfer.files);
    }
});

W3C イベント モデル:

function preventDefault(event) {
    event.preventDefault();
}

function alertFiles(event) {
    alert(event.dataTransfer.files);
}
document.addEventListener("dragstart", preventDefault, false);
document.addEventListener("dragenter", preventDefault, false);
document.addEventListener("dragleave", preventDefault, false);
document.addEventListener("drag", preventDefault, false);
document.addEventListener("dragend", preventDefault, false);
document.addEventListener("dragover", preventDefault, false);
document.addEventListener("drop", preventDefault, false);
document.addEventListener("drop", alertFiles, false);
于 2012-08-09T14:42:34.140 に答える