ホームページ >ウェブフロントエンド >jsチュートリアル >MSIE の「copy」イベントに対して「addEventListener」が機能しないのはなぜですか?

MSIE の「copy」イベントに対して「addEventListener」が機能しないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 07:17:02191ブラウズ

Why Doesn't `addEventListener` Work for the 'copy' Event in MSIE?

MSIE での addEventListener の問題の解決

JavaScript で、addEventListener を使用して 'copy' イベントを実装しようとすると、次のエラーが発生する場合があります。 MSIE:

<code class="javascript">document.getElementById('container').addEventListener('copy',beforecopy,false );
Object doesn't support this property or method</code>

ソリューション

MSIE は標準の addEventListener アプローチから逸脱しており、代わりに 'attachEvent' を使用する必要があります。これは、条件チェックによって実現できます:

<code class="javascript">if (el.addEventListener){
  el.addEventListener('click', modifyText, false); 
} else if (el.attachEvent){
  el.attachEvent('onclick', modifyText);
}</code>

また、カスタム関数を作成してこのプロセスを抽象化することもできます:

<code class="javascript">function bindEvent(el, eventName, eventHandler) {
  if (el.addEventListener){
    el.addEventListener(eventName, eventHandler, false); 
  } else if (el.attachEvent){
    el.attachEvent('on'+eventName, eventHandler);
  }
}
//...
bindEvent(document.getElementById('myElement'), 'click', function () {
  alert('element clicked');
});</code>

ボーナス: 3 番目のパラメーター (useCapture)

addEventListener ('useCapture') の 3 番目の引数は、イベント処理の優先順位を決定します。 true に設定すると、イベントのキャプチャが必要であることを示します。イベントは、ターゲット要素に到達する前に要素の祖先で処理されます。

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

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