當我使用chrome來測試跨瀏覽器事件處理時,該函數不起作用。它說「未捕獲的TypeError:無法讀取null的屬性'addEventListener'」。據我所知,chrome支持「addEventListener」函數,但它不能識別函數。這是我的代碼。Chrome支持「addEventListener」嗎?
<!DOCTYPE html>
<html>
<head>
<title>event test</title>
</head>
<body>
<script type="text/javascript">
var EventUtil = {
addHandler : function(element, type, handler){
if (element.addEventListener){
element.addEventListener(type,handler,false);
}else if (element.attachEvent){
element.attachEvent("on" + type,handler);
}else{
element["on" + type] = handler;
}
},
removeHandler : function(element, type, handler){
if (element.removeEventListener){
element.removeEventListener(type,handler,false);
}else if (element.detachEvent){
element.detachEvent("on" + type,handler);
}else{
element["on" + type] = null;
}
}
};
var btn = document.getElementById('myBtn');
var handler1 = function(){
alert("Hello!");
};
EventUtil.addHandler(btn,"click",handler1);
</script>
<input type="button" name="mybutton" id="myBtn" value="myButton">
</body>
</html>
代碼有什麼問題?如何解決它?
是的,它支持,在[DOMContentLoaded](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)中包裝代碼或將其移動到'body的底部' – Tushar
問題是你的腳本放在dom元素之前,要麼將腳本放在元素之後,要麼等待dom準備好 - https://developer.mozilla.org/en-US/docs/Web/Events/ DOMContentLoaded#Browser_compatibility –
'「未捕獲的類型錯誤:無法讀取null的屬性'addEventListener'」'表示您正在嘗試執行'null.addEventListener'。即問題是什麼填充'btn',而不是'addEventListener'。 –