Javascript 可在FireFox上运行但不能在IE上运行的拖放代码

Javascript 可在FireFox上运行但不能在IE上运行的拖放代码,javascript,html,Javascript,Html,我有以下拖放代码。它在Firefox上运行良好,但在IE上不起作用 //This function starts the event function dragStart(ev) { ev.dataTransfer.effectAllowed= 'move'; //Makes the element movable ev.dataTransfer.setData("Image", ev.target.getAttribute('id')); // Grabs the elemen

我有以下拖放代码。它在Firefox上运行良好,但在IE上不起作用

//This function starts the event
function dragStart(ev) {
    ev.dataTransfer.effectAllowed= 'move'; //Makes the element movable
    ev.dataTransfer.setData("Image", ev.target.getAttribute('id')); // Grabs the element by its id
    return true;
}

//Prevents default but does not turn it off
function dragEnter(ev) {
    ev.preventDefault();
    return true;
}

//Turns off the dragover event and prevents default behavior
function dragOver(ev) {
    return false;
}

//This function performs the actual drop
function dragDrop(ev) {
    var oldImgId = ev.dataTransfer.getData("Image"); //The dragged element’s id is set to a variable

    ev.preventDefault();
    moveImg(oldImgId);
}
当我尝试拖动图像时,IE出现以下错误:

(一)

(二)


您可能希望使用jQueryUI拖放,因为它设计用于所有当前浏览器。


您可能希望使用jQuery UI拖放功能,因为它设计用于所有当前浏览器。


IE只支持文本或URL作为数据,因此“图像”不起作用。试一试

ev.dataTransfer.setData("Text", ev.target.getAttribute('id'));
以下是文档:
IE只支持文本或URL作为数据,因此“图像”不起作用。试一试

ev.dataTransfer.setData("Text", ev.target.getAttribute('id'));
以下是文档:

1)IE是否报告错误?2) 你有没有这样的例子-比如jsfiddle.net请检查我对上面问题的编辑,然后你可以添加HTML或显示这些事件如何附加的代码。你能尝试将
函数dragStart(ev){
更改为
函数dragStart(ev){ev=(ev)吗?ev:window.event;
使用拖放api进行跨浏览器拖放非常棘手。我这里有一个工作示例,是我为一家德语杂志编写的,因此评论是德语的。使用我示例中的代码与html、css和javascript进行比较(所有内容)。关于dnd的最佳解释见。1)IE是否报告了错误?2)您是否有这样的示例-如jsfiddle.net请检查我对上述问题的编辑,然后添加HTML或显示这些事件如何附加的代码。您是否可以尝试更改
函数dragStart(ev){
函数dragStart(ev){ev=(ev)?ev:window.event;
使用拖放api跨浏览器拖放是非常棘手的。我这里有一个工作示例,我是为一家德国杂志编写的,因此注释是德语的。使用我示例中的代码与html、css和javascript进行比较(都很重要)。网上关于dnd的最佳解释是在上。我尝试了它,但仍然不起作用,我有相同的错误。我能够通过替换:1)ev.dataTransfer.setData(“Image”,ev.target.getAttribute('id');替换为:var target=(ev.target)?ev.target:ev.srcelment;ev.dataTransfer.setData(“Text”)来修复我在IE上遇到的错误,target.getAttribute('id');2)ev.preventDefault();with:if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}现在我没有从IE中得到任何错误,但是拖动仍然不起作用。您是否也将以下行的“Image”更改为“Text”?var oldImgId=ev.dataTransfer.getData(“Image”);我不明白,一切似乎都很好。我试着在IE中调试dragStart,当函数返回时,IE调试器出现了一个奇怪的错误“源代码不适用于此位置”我不知道这意味着什么???您是否可以发布到整个源代码(html、css和javascript)的链接对于拖放或创建小提琴?您也看过我在上面问题的评论中发布的示例吗?感谢TJ的帮助,我看到了您的示例,两者都比较相似,除了在您发送的示例中,它使用DOM事件(添加处理程序),在我的浏览器中,我使用内联Html,我尝试过,但仍然不起作用,我有相同的错误。我能够通过替换:1)ev.dataTransfer.setData(“Image”,ev.target.getAttribute('id');替换为:var target=(ev.target)?ev.target:ev.srcelment;ev.dataTransfer.setData(“Text”,target.getAttribute('id'));2)ev.preventDefault();with:if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}现在我没有从IE中得到任何错误,但是拖动仍然不起作用。您是否也将以下行的“Image”更改为“Text”?var oldImgId=ev.dataTransfer.getData(“Image”);我不明白,一切似乎都很好。我试着在IE中调试dragStart,当函数返回时,IE调试器出现了一个奇怪的错误“源代码不适用于此位置”我不知道这意味着什么???您是否可以发布到整个源代码(html、css和javascript)的链接对于拖放或创建小提琴?你也看过我在上面问题的评论中发布的示例吗?谢谢TJ的帮助,我看到了你的示例,两者都比较相似,除了在你发送的示例中,它使用DOM事件(添加处理程序),在我的示例中我使用内联Html
ev.dataTransfer.setData("Text", ev.target.getAttribute('id'));