首页 >web前端 >js教程 >为什么我的 `` onclick 事件处理程序在 IE8 中失败,如何修复它们?

为什么我的 `` onclick 事件处理程序在 IE8 中失败,如何修复它们?

Linda Hamilton
Linda Hamilton原创
2024-11-28 07:11:10841浏览

Why Do My `` onclick Event Handlers Fail in IE8, and How Can I Fix Them?

IE8“Onclick”事件侦听器与

  • 的问题标签
  • 在 IE8 中使用提供的 JavaScript 代码时,

  • 的“onclick”事件处理程序将被调用。元素可能无法按预期运行。此问题源于 IE8 及早期版本的浏览器不支持“addEventListener”方法。

    解决方案:

    要解决此问题,有一个解决方法可以使用涉及IE8中“addEventListener”的非标准前身,即“attachEvent”。下面是使用此方法的 JavaScript 代码的修改版本:

    hookEvent(document.getElementById("hd_vertical"), "click", function(e) {
            if(e.target.nodeName == "LI") { 
                var _anchor = e.target.id;
                changeLocation(_anchor);
            } else if(e.target.nodeName == "SPAN") {
                var span = e.target;
                var li = span.parentNode;
                var _anchor = li.id;   
                changeLocation(_anchor);
        }
    });

    此代码的工作原理如下:

    • hookEvent: 此函数检查“addEventListener”或“attachEvent”的可用性,并为各自使用适当的版本browser.
    • OldIEHookEvent: 此函数在 IE8 及更早版本的浏览器中使用“attachEvent”将事件处理程序附加到元素。它还填补了缺失的函数,如“preventDefault”和“stopPropagation”。

    注意: IE8 也缺乏对“getElementsByClassName”的支持。考虑使用“querySelector”或“querySelectorAll”来代替:

    var _url = document.querySelector("." + id).getAttribute('href');

    通过实施这些更改,

  • 的“onclick”事件处理程序元素现在应该在 IE8 中正常运行。
  • 以上是为什么我的 `` onclick 事件处理程序在 IE8 中失败,如何修复它们?的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明:
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn