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'));