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 拖放问题(无法访问数据传输属性)的主要内容,如果未能解决你的问题,请参考以下文章
innerHTML 删除 Internet Explorer 中的属性引号
如何将 Internet Explorer 中的数据 URI 用作 URL?
如何从 Internet Explorer 中的父元素继承 textarea 的背景颜色?
html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持