2012-08-09 116 views
11

是什麼在HTML 5

event.originalEvent.dataTransfer.files 

event.dataTransfer.files 

之間的差event.originalEvent.dataTransfer.files和event.dataTransfer.files之間差???

因爲在拖放中,第二個代碼不起作用,它是未定義的,我必須使用第一個代碼,因爲它的工作原理!

回答

34

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

感謝ü這麼多的重播!我知道了;)...我想投你的答案,但它說「投票要求15聲望」爲什麼?! ( – 2012-08-09 14:48:20

+0

@ user1574766好吧,需要15個聲望才能啓動upvoting答案。你目前有11個聲望。 – Esailija 2012-08-09 14:48:55

+4

謝謝。我完成了:) – 2012-08-09 14:56:46