在IE9中拖放HTML

时间:2012-08-06 13:38:01

标签: javascript html5 internet-explorer drag-and-drop

我尝试拖放HTML。除了IE9之外,它在所有浏览器中都运行良好(不需要低于IE9)。 IE9中未触发ondrop事件。

任何帮助?这是我的代码。

jsFiddle

提前致谢。

1 个答案:

答案 0 :(得分:6)

如果您使用div代码替换a,它就会有效。但是,您还应该进行其他一些更改,首先通过在a事件中返回false来确保onclick标记不是可点击的链接:

<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/plainsetData的参数,而是使用Text或在try...catch内添加数据。此外,您应该确保您添加的数据实际上是文本:

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

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

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

Here is a jsFiddle of your code which will work in IE9