5
<div id="asd" title="222">drag me</div>

<script>
var el = document.getElementById("asd");
el.draggable=true;
el.addEventListener("dragstart", function(ev){
    ev.stopPropagation();
    var dt = ev.dataTransfer;
    dt.effectAllowed = "copyMove";
        console.log(this.getAttribute("title") + " attr");
    dt.setData('Text', this.getAttribute("title"));
        console.log(dt.getData('Text') + " dt");
},false);
</script>

小提琴:

http://jsfiddle.net/vwjCa/

http://jsfiddle.net/vwjCa/2/(此处自定义类型而不是文本)

在 Firefox 打印中:

222 attr
222 dt

在镀铬印刷品中:

222 attr
 dt

这里的问题在哪里?提前致谢

4

2 回答 2

9

回答我自己:

显然 chrome只允许在 drop 事件中读取 dataTransfer 的数据

这是出于安全原因

例如,如果我在远程页面上“拖过”信用卡号,除非我没有“删除”,否则这个应该无法读取我的数据

firefox does the same, but allows to read getData() if "domain" of events is the same

于 2012-08-18T16:09:05.157 回答
3

chrome中有一个错误,它只允许您使用某些 mime 类型。尝试将'Text'您的代码更改为'text/plain',这应该可以在 chrome 中使用。

于 2012-08-15T17:35:16.470 回答