当攻击偶数

时间:2015-11-24 12:41:15

标签: javascript javascript-events

我仍然需要一个vanilla JavaScript解决方案来在Internet Explorer 8中附加事件处理程序。当我执行下面的代码时,我在ie8中遇到Object doesn't support property or method 'attachEvent'的错误。我该如何解决这个问题。

if ('addEventListener' in document) {
    document.addEventListener('DOMContentLoaded', function () {
        [].forEach.call(document.querySelectorAll('input'), function (el) {
            el.addEventListener('click', function (e) {
                e.preventDefault();
                alert('nope');
            }, false);
        });
    })
}
else
{
    var d = document.getElementsByTagName('input');
    d.attachEvent('onclick', function () {
        alert('no');
    });
}

1 个答案:

答案 0 :(得分:2)

getElementsByTagName会返回元素的集合,而不是单个元素。该集合没有attachEvent。个别元素(在较旧的IE上)。

另请注意:

  • 您的IE特定分支并不等待您的标准分支解析完整的DOM。两者都应该,或两者都不应该,但不是混合。最佳做法是不要使用DOMContentLoaded,只需将脚本放在HTML的末尾,紧接在结束</body>标记之前。

  • 您的IE事件处理程序不会阻止默认操作,而您的标准是。

如果您想要一个跨浏览器事件附加功能,here's one in another answer on SO