2016-01-13 81 views
4

例如這裏是w3schools.com拖放代碼:什麼是preventDefault()阻止拖放?

function allowDrop(ev) { 
    ev.preventDefault(); 
} 

function drag(ev) { 
    ev.dataTransfer.setData("text", ev.target.id); 
} 

function drop(ev) { 
    ev.preventDefault();  
    var data = ev.dataTransfer.getData("text");  
    ev.target.appendChild(document.getElementById(data)); 
} 
+2

它取決於被拖動的元素的類型。如果它是一個'anchor'元素,它將阻止遵循'href'屬性值。 –

+0

怎麼辦? – Taurus

+0

HTML標準 - > [6.7.5拖放處理模型](https://html.spec.whatwg.org/multipage/interaction.html#drag-and-drop-processing-model) – Andreas

回答

1
您必須取消ondragenter默認的動作和ondragover爲了ondrop解僱任何數據。在div的情況下,默認操作不會丟失。這可以與輸入類型=文本元素的情況進行對比,其中默認操作是刪除。爲了允許在div上進行拖放操作,您必須取消默認操作
0
  • 呼叫preventDefault()防止 數據的瀏覽器默認處理(默認是在下降的鏈接打開)
  • 獲取用dataTransfer.getData()方法拖動數據。該方法將返回被設置爲 同一類型的setData()方法