影響あり DataTransfer.typesDOMStringList から Array に変わりました

公開日: | カテゴリー: DOM

概要

Firefox はこれまで DataTransfer.prototype.types プロパティに DOMStringList を返していました。Firefox 52 以降では、現行の HTML 仕様に従い、単純な DOMStringArray を返すようになります。つまり、このプロパティ上で contains メソッドは使えなくなり、特定の種類のデータが提供されているかどうかを調べるには、代わりに includes メソッドを使う必要があります。

後方互換性のため、以下のように スプレッド構文 を使うことができます。

document.body.addEventListener('drop', event => {
  event.preventDefault();

  if ([...event.dataTransfer.types].includes('text/html')) {
    // 何か処理を実行
  }
});

更新: JIRA での添付ファイルのドラッグ&ドロップがこの変更により動作しなくなっています。Atlassian は 問題を修正済み です。解決策は こちらのスレッド を参照してください。

参考資料