ホームページ >ウェブフロントエンド >jsチュートリアル >「タグ」の「onclick」関数が IE8 で動作しないのはなぜですか?どうすれば修正できますか?
JS li タグ onclick が IE8 で機能しない: 解決策
Web 開発では、ブラウザ間の互換性が最も重要です。 IE8 などのインターネット ブラウザで予期しない動作が発生すると、イライラすることがあります。この記事では、
解決策を理解するには、IE8 には標準の addEventListener メソッドがサポートされていないことを認識することが重要です。代わりに、従来のattachEventメソッドが使用されます。 IE8 でイベントを処理し、ブラウザー間の互換性を確保するには、polyfill 関数を使用できます。
var hookEvent = (function() { var div; function standardHookEvent(element, eventName, handler) { element.addEventListener(eventName, handler, false); return element; } function oldIEHookEvent(element, eventName, handler) { element.attachEvent("on" + eventName, function(e) { e = e || window.event; e.preventDefault = oldIEPreventDefault; e.stopPropagation = oldIEStopPropagation; handler.call(element, e); }); return element; } function oldIEPreventDefault() { this.returnValue = false; } function oldIEStopPropagation() { this.cancelBubble = true; } div = document.createElement('div'); if (div.addEventListener) { div = undefined; return standardHookEvent; } if (div.attachEvent) { div = undefined; return oldIEHookEvent; } throw "Neither modern event mechanism (addEventListener nor attachEvent) is supported by this browser."; })();
この関数は、ブラウザーでサポートされているイベント処理メカニズムを検出し、適切な関数を呼び出します。また、preventDefault メソッドと stopPropagation メソッドのポリフィルも提供します。
この関数を使用するには、元のコードを変更できます。
hookEvent(document.getElementById("hd_vertical"), "click", function(e) { // Handle the event });
最後に、IE8 では getElementsByClassName もサポートされていないことに注意してください。代わりに、IE8 で要素を取得するには querySelectorAll を使用する必要があります。
これらのソリューションを実装することで、
以上が「タグ」の「onclick」関数が IE8 で動作しないのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。