Javascript 是否可以使用dataTransfer传输对象
我有一个Javascript 是否可以使用dataTransfer传输对象,javascript,javascript-events,data-transfer,Javascript,Javascript Events,Data Transfer,我有一个元素,它有一个自定义属性meta,而meta又有自己的属性。拖动图像时,我希望将事件的数据传输设置为包含meta对象本身,而不必设置对meta属性的多个引用。希望这有意义?!?下面是一个例子 p、 我在使用chrome,我相信我在某个地方读到过,这可能与数据传输有关 当前工作用途: 这是可行的,但只是意味着我必须从drop事件调用每个引用,以获取数据,即: img=div.getElementsByTagName('img')[0]; img.meta={ tit:itm.tit
元素,它有一个自定义属性meta
,而meta又有自己的属性。拖动图像时,我希望将事件的数据传输设置为包含meta
对象本身,而不必设置对meta
属性的多个引用。希望这有意义?!?下面是一个例子
p、 我在使用chrome,我相信我在某个地方读到过,这可能与数据传输
有关
当前工作用途:
这是可行的,但只是意味着我必须从drop
事件调用每个引用,以获取数据,即:
img=div.getElementsByTagName('img')[0];
img.meta={
tit:itm.tit,
ref:itm.ref,
cat:itm.cat
};
img.addEventListener('dragstart',function(e){
e.dataTransfer.setData('tit',this.meta.tit);
e.dataTransfer.setData('ref',this.meta.ref);
e.dataTransfer.setData('catId',this.meta.cat.id);
e.dataTransfer.setData('catRef',this.meta.cat.ref);
e.dataTransfer.setData('url',this.src);
});
enGal.appendChild(img);
我更希望能够做这样的事情:
title=e.dataTransfer.getData('tit');
...
然后:
如果我尝试将dataTransfer
设置为meta
对象,它只会将对象作为字符串返回,即:
meta=e.dataTransfer.getData('meta');
title=meta.tit;
...
我认为您应该使用JSON来传递元对象,因为:
e.dataTransfer.setData('meta',this.meta);
meta=e.dataTransfer.getData('meta');
// meta == "[object Object]"
console.log(meta); // "[object Object]"
有趣的从没想过!干杯知道是否有可能传递一个对象文本,那还可以吗?
e.dataTransfer.setData('meta',this.meta);
meta=e.dataTransfer.getData('meta');
// meta == "[object Object]"
console.log(meta); // "[object Object]"
img=div.getElementsByTagName('img')[0];
img.meta={
tit:itm.tit,
ref:itm.ref,
cat:itm.cat,
// EDIT
url:img.src
};
img.addEventListener('dragstart',function(e){
// EDIT
e.dataTransfer.setData('meta',JSON.stringify(this.meta));
//converting to JSON in the line above.
});
enGal.appendChild(img);
//converting from JSON to object
meta=JSON.parse(e.dataTransfer.getData('meta'));