html 5中event.originalEvent.dataTransfer.files和event.dataTransfer.files之间的区别

时间:2012-08-09 14:40:03

标签: jquery html5 drag-and-drop

之间有什么区别
event.originalEvent.dataTransfer.files

event.dataTransfer.files

???

因为在拖放中,第二个代码不起作用且未定义,我必须使用第一个代码,因为它可以工作!

1 个答案:

答案 0 :(得分:35)

jQuery不会将浏览器事件对象传递给您,它会传递jQuery event object。您可以通过jQuery事件对象中的.originalEvent属性访问原始的未触摸事件对象。然后你可以正常进行。

所以在代码中:

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);