1. ホーム
  2. javascript

[解決済み] MSIEとJavascriptのaddEventListenerの問題?

2023-06-03 01:42:13

質問

document.getElementById('container').addEventListener('copy',beforecopy,false );

Chrome / Safariでは、上記のようにすると、ページ上のコンテンツがコピーされる際に、"beforecopy"の関数が実行されます。MSIEもこの機能をサポートしているはずなのですが、なぜかこのエラーが発生します。

Object doesn't support this property or method"

Internet Explorer が body ノードを扱わないことは理解していますが、ID によるノードの提供はうまくいくと考えていました。どなたか、私が間違っていることについて何かアイデアをお持ちですか?事前にありがとうございます。

** 3 番目のパラメーター "False" が何のために良いのかを教えてくれる人にはボーナス ポイントを差し上げます。

どのように解決するのですか?

IEでは attachEvent ではなく、標準の addEventListener .

一般的によく行われるのは addEventListener メソッドが利用可能であればそれを使用し、そうでなければ attachEvent :

if (el.addEventListener){
  el.addEventListener('click', modifyText, false); 
} else if (el.attachEvent){
  el.attachEvent('onclick', modifyText);
}

関数を作ればいいんです。

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');
});

上記のコードの例を実行することができます はこちら .

の第三引数は addEventListeneruseCapture が真であれば、ユーザが イベントキャプチャ .