Internet Explorer 中的 HTML5 拖放问题(无法访问数据传输属性)

Posted

技术标签:

【中文标题】Internet Explorer 中的 HTML5 拖放问题(无法访问数据传输属性)【英文标题】:HTML5 Drag&Drop issue in Internet Explorer (dataTransfer property access not possible) 【发布时间】:2014-11-30 12:32:44 【问题描述】:

我正在尝试使用 html5 实现基本的拖放功能。它在 Chrome 中运行良好,但在 IE10 中,setData 行出现0x8000ffff - javascript runtime error: Unexpected call to method or property access. 错误。

function handleDragStart(e) 
    e.dataTransfer.effectAllowed = 'move';                                        
    e.dataTransfer.setData("dropTarget", g.destination);


var cols = $("#" + g.source + " tbody > tr");
[].forEach.call(cols, function (col) 
    col.addEventListener('dragstart', handleDragStart, false);
);

我做错了什么?

【问题讨论】:

drag and drop not working in IE - Javascript, HTML5的可能重复 【参考方案1】:

对于那些正在寻找答案的人:

getData() 和 setData() 属性必须准确地称为“文本”,因为您可以在其他浏览器中使用任何参数(这实际上很有意义 - IE 再次摇摆不定),这里的其他答案是无用的。

【讨论】:

@netik 这个答案应该被标记为正确。并感谢@user1096907! 在花了一个小时或更长时间试图弄清楚为什么我不能放入 IE11 之后,我发现你不能放入内联样式的元素; w3schools.com/code/tryit.asp?filename=FCO7068754RJ 该值实际上应该是“文本”。如果你给出“文本”,IE 仍然会将“文本”写入dataTransfer.types 对象。如果您随后尝试在放置时检查“文本” (dataTransfer.types.contains("text")),它将失败。 @atheaos 时间太长了,所以我不记得了,但可能取决于 IE 版本?因为我了解自己,如果它是正确的字符串,我会写“文本”。我无法测试它,因为显而易见的原因,我什至没有在任何地方安装 IE :) 刚刚花了一个小时。 GRR。【参考方案2】:

你是对的。 在 IE 11 中我改变了 从 e.dataTransfer.getData('text/html') 到 e.dataTransfer.getData('text') 并且没有错误发生。 Dto。在 e.dataTransfer.setData('text') 中。

此示例(DnD 方法)随后将在 IE 11、Chrome 和 Firefox 中运行: http://www.developer.com/lang/using-html5-drag-and-drop-in-asp.net.html

【讨论】:

【参考方案3】:

看来我误解了dataTransfer.setData 的用途。

它只能这样工作:

e.dataTransfer.setData("Text", g.destination);

【讨论】:

这与您问题中的代码有何不同?所以参数必须准确地称为“文本”/“文本”??提这个怎么样?

以上是关于Internet Explorer 中的 HTML5 拖放问题(无法访问数据传输属性)的主要内容,如果未能解决你的问题,请参考以下文章

Internet Explorer 11 中的光标偏移

Internet Explorer 中的 SVG 太小

innerHTML 删除 Internet Explorer 中的属性引号

如何将 Internet Explorer 中的数据 URI 用作 URL?

如何从 Internet Explorer 中的父元素继承 textarea 的背景颜色?

html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持