2014-03-25 35 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这个问题,我用我所有的发现做了一个长期的解释。

顺便说一句 - 我看到它说拖放是由于缺乏实施可能会被删除的风险,这是可惜的。