ホームページ >ウェブフロントエンド >jsチュートリアル >「タグ」の「onclick」関数が IE8 で動作しないのはなぜですか?どうすれば修正できますか?

「タグ」の「onclick」関数が IE8 で動作しないのはなぜですか?どうすれば修正できますか?

DDD
DDDオリジナル
2024-12-11 15:33:14750ブラウズ

Why Doesn't My `` Tag's `onclick` Function Work in IE8, and How Can I Fix It?

JS li タグ onclick が IE8 で機能しない: 解決策

Web 開発では、ブラウザ間の互換性が最も重要です。 IE8 などのインターネット ブラウザで予期しない動作が発生すると、イライラすることがあります。この記事では、

  • 上の onclick イベント リスナーが発生する問題に取り組みます。タグは 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 を含む複数のブラウザーで動作します。

    以上が「タグ」の「onclick」関数が IE8 で動作しないのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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