3

我尝试在 HTML 中拖放。它在除 IE9 之外的所有浏览器中运行良好(无需在低于 IE9 的情况下运行)。在 IE9 中不会触发 ondrop 事件。

有什么帮助吗?这是我的代码。

jsFiddle

提前致谢。

4

1 回答 1

6

如果你diva标签替换它会起作用。但是,您还应该进行一些其他更改,首先通过在事件中返回来确保a标签不是可点击的链接:falseonclick

<a class="div123" href="#" draggable="true"
 ondragstart="handleDragStart(event)"
 ondrop="handleDrop(event)"
 ondragover="dragoveHandler(event)"
 onclick="return false;">
    HTML5 drag and drop
</a>

其次,IE9 不接受text/plainin 的参数setData,而是使用Text或在 a 中添加数据try...catch。此外,您应该确保您添加的数据实际上是文本:

e.dataTransfer.setData("Text", "" + $(e.target).index());

最后,您的handleDrop函数需要preventDefault/return false因为否则删除链接(a元素)的默认操作是导航到删除的 URL:

function handleDrop(e) {
    alert($(e.target).index());
    if (e.preventDefault) {
        e.preventDefault(); // Necessary. Stops redirect.
    }
    return false;
}

这是您的代码的 jsFiddle,它将在 IE9 中运行

于 2012-08-21T15:02:46.660 回答