攻击偶数时,对象不支持 ie8 中的 属性 或方法 'attachEvent'
Object doesn't support property or method 'attachEvent' in ie8 when attackhing an even
我仍然需要一个普通的 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');
});
}
getElementsByTagName
returns 元素的 集合 ,而不是单个元素。该集合没有 attachEvent
。个别元素(在较旧的 IE 上)。
另请注意:
您的 IE 特定分支不会像您的标准分支那样等待完整的 DOM 被解析。要么两者都应该,要么两者都不应该,但不能混合使用。最佳做法是不要使用 DOMContentLoaded
,而只是将脚本放在 HTML 的末尾,紧接在 </body>
结束标记之前。
您的 IE 事件处理程序没有阻止默认操作,而您的标准是。
如果你想要一个跨浏览器的事件附加功能,here's one in another answer on SO。
我仍然需要一个普通的 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');
});
}
getElementsByTagName
returns 元素的 集合 ,而不是单个元素。该集合没有 attachEvent
。个别元素(在较旧的 IE 上)。
另请注意:
您的 IE 特定分支不会像您的标准分支那样等待完整的 DOM 被解析。要么两者都应该,要么两者都不应该,但不能混合使用。最佳做法是不要使用
DOMContentLoaded
,而只是将脚本放在 HTML 的末尾,紧接在</body>
结束标记之前。您的 IE 事件处理程序没有阻止默认操作,而您的标准是。
如果你想要一个跨浏览器的事件附加功能,here's one in another answer on SO。