Chrome Handling dataTransfer.types as Object



我在Chrome 24.0.1312.5中的dataTransfer中遇到了一个非常时髦的问题,我希望我能得到一些想法。 基本上,我有一个nodeIterator,可以从iframe中挑选出一些有用的元素。 对于这些元素中的每一个,我都会添加事件侦听器以允许删除内容。 我对这段代码有问题:

currentNode.addEventListener('dragover', function (e) {
    // Only accept images
    // Error occurs in below conditional
    if (e.dataTransfer.types.contains('text/uri-list')) {
        e.preventDefault();
    }
});

下面是我的代码中添加数据的部分:

figure.draggable = 'true';
figure.addEventListener('dragstart', function (e) {
    e.dataTransfer.setData('text/uri-list', img.src);
    e.dataTransfer.setData('text/plain', img.alt);
    e.dataTransfer.setData('application/x-trash.delete', img.id);
});

我在控制台中遇到的错误是这样的:

Uncaught TypeError: Object text/plain,text/uri-list,application/x-trash.delete
has no method 'contains'

我写了一个小提琴,应该能够重现这个问题,但当然它工作得很好。

对我可能缺少的东西有什么想法吗? 还是我应该检查代码的其他相关部分?

Chrome 中返回的 dataTransfer.types 似乎是一个 Array.您可以使用 indexOf() 而不是 include 方法来解决方法。

相关内容

最新更新