dataTransfer.setData不能在IE9中工作

dataTransfer.setData does not work in IE9

本文关键字:工作 IE9 setData 不能 dataTransfer      更新时间:2023-09-26

我用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?

在ie中根据文档只有两个参数IE9不接受text/html作为格式。只使用"Text"

下面是来自MSDN网站的ie示例:

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;
}

setData method expect 字符串数据类型不是Number

setData('text',1)是错误的

setData('text',''+1)是正确的