1

Chrome 24.0.1312.5のdataTransferで非常にファンキーな問題が発生しており、いくつかのアイデアが得られることを期待しています。基本的に、私はnodeIteratoriframeからいくつかの有用な要素を選び出すものを持っています。これらの要素ごとに、コンテンツのドロップを許可するイベントリスナーを追加しています。私はこのコードのビットに問題があります:

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は配列のようです。containsメソッドの代わりにindexOf()を使用して回避できます。

于 2013-06-20T06:32:58.223 に答える