JS中註冊事件的三種方式及相容性處理
阿新 • • 發佈:2018-12-19
- 第一種(所有瀏覽器都支援,但是無法給同一個物件的同一個事件註冊多個事件處理函式)
btn.onclick = function() {
alert("111")
}
btn.onclick = function() {
alert("222")
}
- 第二種(dom標準中的方法,存在瀏覽器相容性問題,IE9以後支援)
btn.addEventListener("click", function() {
alert("111");
})
btn.addEventListener( "click", function() {
alert("222");
})
- 第三種(第一個引數,事件的名稱前要加 on。存在瀏覽器相容性問題,IE的老版本特有的方法,IE6-10支援)
btn.attachEvent('onclick', function () {
alert('111');
});
btn.attachEvent('onclick', function () {
alert('222');
});
相容性處理
//eventName,不帶on(如:click,mouseover)
function addEventListener(element, eventName, fn) {
//判斷當前瀏覽器是否支援addEventListener方法
if (element.addEventListener) {
element.addEventListener(eventName, fn);
} else if (element.attachEvent) {
element.attachEvent(eventName, fn);
} else {
element["on" + eventName] = fn; //相當於element.onclick=fn;
}
}