【问题标题】:dataTransfer.setData does not work in IE9dataTransfer.setData 在 IE9 中不起作用
【发布时间】:2026-01-07 23:50:02
【问题描述】:
我正在使用 jquery 将一些代码绑定到 dragstart 事件,如下所示:
$new.on('dragstart', function(event) {
event.originalEvent.dataTransfer.setData("text/html", $new.clone().wrap('<p>').parent().html());
});
$new 是一个 jquery 对象。目的是将拖动元素的 html 附加到事件中,以便我可以在拖放时创建副本。 Chrome 甚至不需要此事件来执行此操作。添加此代码时,Firefox 可以工作。但是当事件被触发时,IE9 会抛出一个SCRIPT65535: Unexpected call to method or property access.。这是一个 jsFiddle:http://jsfiddle.net/j52EM/3/
我怎样才能使它适用于 IE?
【问题讨论】:
标签:
javascript
jquery
internet-explorer
drag-and-drop
【解决方案1】:
根据docs,IE9 中只有两个参数不接受 text/html 作为格式。仅使用“文本”
这是一个示例,即根据 msdn 网站:
function InitiateDrag()
// The setData parameters tell the source object
// to transfer data as a URL and provide the path.
{
event.dataTransfer.setData("URL", oImage.src);
}
function FinishDrag()
// The parameter passed to getData tells the target
// object what data format to expect.
{
sImageURL = event.dataTransfer.getData("URL")
oTarget.innerText = sImageURL;
}
【解决方案2】:
setData 方法期望 字符串数据类型不是数字
setData('text',1) 错了
setData('text',''+1) 是正确的