2014-03-25 64 views
1

根據HTML5規範,放置目標上的dropEffect屬性允許放置目標選擇所需的放置效果。拖放框架應該將其與由拖動源設置的effectAllowed屬性結合以顯示匹配的視覺反饋(通常取決於操作的特定遊標)。用於HTML5拖放的DropEffect語義

但是我無法在瀏覽器中一致地使用此功能。它似乎可以像預期的那樣適用於Chrome和Opera,但不適用於IE和FF(儘管每個瀏覽器的開發者文檔都明確地記錄了它)。

我已經把上的jsfiddle樣本:http://jsfiddle.net/cleue/zT87T/

function onDragStart(element, event) { 
    var dataTransfer = event.dataTransfer, 
     effect = element.innerText || element.textContent; 
    dataTransfer.effectAllowed = effect; 
    dataTransfer.setData("Text", effect); 
    dataTransfer.setDragImage(element, 0, 0); 
} 

function onDragEnter(element, event) { 
    var dataTransfer = event.dataTransfer, 
     effect = element.innerText || element.textContent; 
    dataTransfer.dropEffect = effect; 
    event.preventDefault(); 
} 

function onDragOver(element, event) { 
    var dataTransfer = event.dataTransfer, 
     effect = element.innerText || element.textContent; 
    dataTransfer.dropEffect = effect; 
    event.preventDefault(); 
} 

這是樣品不正確或我的這個功能的目的的理解或者是這些瀏覽器的bug?

回答

0

我有完全相同的問題,並得出了和你一樣的結論,它只是不起作用。除了改變鼠標光標之外,還有在源元素處進行的工作 - 從spec開始,您可以收聽dragend,例如如果拖放效果是移動,則移除該元素,如果是複製,則將其保留。這也不一致。我問了here這個問題,我用我所有的發現做了一個長期的解釋。

順便說一句 - 我看到它說拖放是由於缺乏實施可能會被刪除的風險,這是可惜的。