最近はIE8が対象ブラウザに入ることは少なくなっていると思いますが、IE8以下でaddEventListener()が使えないことを知らなかったので、IE8での対応方法をメモしておきます。
サンプルコード
まずは特に対応しなかった場合です。
HTML
<button id="btn">ボタン</button>
JavaScript
var btn = document.getElementById('btn'); btn.addEventListener('click', btnClick, false); function btnClick() { alert('クリックしました'); }
開発者ツールのIE8で確認すると、consoleに『オブジェクトは ‘addEventListener’ プロパティまたはメソッドをサポートしていません。』と表示されていました。
対応前のデモページ
対応する場合、attachEvent()を使用します。
JavaScript
var btn = document.getElementById('btn'); if(btn.addEventListener) { btn.addEventListener('click', btnClick, false); } else if(btn.attachEvent) { btn.attachEvent('onclick', btnClick); } function btnClick() { alert('クリックしました'); }
addEventListener()が使えるブラウザではaddEventListener()、使えない場合はattachEvent()でイベントリスナを登録しています。
対応後のデモページ
【参考サイト】
- EventTarget.addEventListener – Web API インターフェイス | MDN
- EventTarget.attachEvent() – Web API インターフェイス | MDN
- IE8以下でaddEventListenerが使えないので – Qiita
コメントが承認されるまで時間がかかります。