1

我在 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'

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

对我可能遗漏的东西有什么想法吗?或者我应该检查的其他相关代码部分?

4

1 回答 1

3

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

于 2013-06-20T06:32:58.223 回答