ホームページ >ウェブフロントエンド >jsチュートリアル >## Internet Explorer で「addEventListener」が機能しないのはなぜですか?

## Internet Explorer で「addEventListener」が機能しないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 18:45:37344ブラウズ

##  Why Does My `addEventListener` Not Work in Internet Explorer?

MSIE AddEventListener の難題: イベント キャプチャとブラウザ間の互換性

Web 開発の領域では、イベント処理が確実に行われるようにすることが不可欠です。さまざまなブラウザ間で一貫性があります。ただし、Internet Explorer (MSIE) で特定のイベントをリッスンしようとすると、課題が発生します。

そのような課題の 1 つは、MSIE を使用する場合の addEventListener の非互換性です。コピー イベントをリッスンしようとする、指定したコード スニペットでは、この問題によりエラーが発生します。

問題の根本: AttachEvent を Rescue に接続する

他の最新のブラウザとは異なり、MSIE ではイベント リスニングに addEventListener の代わりにattachEvent を使用することが義務付けられています。この不一致を修正するには、次のようにサードパーティのスクリプトをより IE フレンドリーなスクリプトに置き換える必要があります:

if (el.addEventListener) {
  el.addEventListener('copy', beforeCopy, false);
} else if (el.attachEvent) {
  el.attachEvent('oncopy', beforeCopy);
}

ボーナス ポイント: 3 番目のパラメータの謎を解明する

addEventListener の 3 番目のパラメーター useCapture は、イベントをキャプチャするか DOM を通じてバブルするかを決定します。 false に設定すると、バブリングが暗黙的に指定されます。これは、イベントが最初に最も内側の要素に送出され、次に上位要素に伝播されるデフォルトの動作です。

追加のブラウザー間互換性に関するヒント

ブラウザ間の互換性をさらに強化するには、ポリフィルを使用して、addEventListener とattachEvent の間の微妙な違いや、その他のブラウザ固有の癖を抽象化することを検討してください。注目すべきポリフィルには、

  • [EventListener.js](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)
  • [ clouset.js](https://github.com/Clouset/Clouset)

これらのブラウザー固有の考慮事項を受け入れ、必要なブラウザー間の互換性対策を実装することで、Web アプリケーションが確実に使用するブラウザに関係なく、ユーザーのアクションに一貫して応答します。

以上が## Internet Explorer で「addEventListener」が機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。