addEventListener在IE8中不起作用

rav*_*404 116 javascript addeventlistener internet-explorer-8

我动态创建了一个复选框.我曾经addEventListener在点击复选框时调用了一个函数,该复选框适用于Google Chrome和Firefox,但在Internet Explorer 8中不起作用.这是我的代码:

var _checkbox = document.createElement("input");
_checkbox.addEventListener("click", setCheckedValues, false);
Run Code Online (Sandbox Code Playgroud)

setCheckedValues 是我的事件处理程序.

Sud*_*oti 213

尝试:

if (_checkbox.addEventListener) {
    _checkbox.addEventListener("click", setCheckedValues, false);
}
else {
    _checkbox.attachEvent("onclick", setCheckedValues);
}
Run Code Online (Sandbox Code Playgroud)

更新:: 对于IE9之前的Internet Explorer版本,应使用attachEvent方法将指定的侦听器注册到调用它的EventTarget,对于其他应使用addEventListener.


Zet*_*eta 43

您必须attachEvent在IE9之前的IE版本中使用.检测是否addEventListener已定义,attachEvent如果不是,则使用:

if(_checkbox.addEventListener)
    _checkbox.addEventListener("click",setCheckedValues,false);
else
    _checkbox.attachEvent("onclick",setCheckedValues);
//                         ^^ -- onclick, not click
Run Code Online (Sandbox Code Playgroud)

请注意,IE11将删除attachEvent.

也可以看看:


Ser*_*nko 13

这也是简单的crossbrowser解决方案:

var addEvent =  window.attachEvent||window.addEventListener;
var event = window.attachEvent ? 'onclick' : 'click';
addEvent(event, function(){
    alert('Hello!')
});
Run Code Online (Sandbox Code Playgroud)

当然,取代"点击"可以是任何事件.