私の JS `li` onclick が IE8 で動作しないのはなぜですか?

Susan Sarandon
リリース: 2024-11-27 18:28:16
オリジナル
261 人が閲覧しました

Why Isn't My JS `li` onclick Working in IE8?

JS li onclick IE8 で動作しない

問題:
提供されたコードでは、li 要素のInternet Explorer でクリック イベントがトリガーされない8.

解決策:

IE8 は addEventListener をサポートしません。代わりに、その非標準の前身であるattachEventを使用してください。

コードの変更:

まず、イベントのフックアップを処理する関数を作成します:

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.";
})();
ログイン後にコピー

次に、この関数を使用してイベントをフックしますリスナー:

hookEvent(document.getElementById("hd_vertical"), "click", function(e) {
    // Your event handling code here
});
ログイン後にコピー

注:
IE8 には getElementsByClassName もサポートされていません。代わりに、querySelectorAll または querySelector:

var _url = document.querySelectorAll("." + id)[1].getAttribute('href');
ログイン後にコピー
を使用してください。

以上が私の JS `li` onclick が IE8 で動作しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート