事件标准化是从DOM Level2才完成的,导致IE9以前的版本与其他现代浏览器有差异。事件监听差异如下:
| 普通浏览器 | IE |
添加监听事件 | addEventListener() | attachEvent() |
点击事件 | onclick | attachEvent() |
监听事件参数 | function(e){ e.target} | 没有事件参数,但有一个全局对象: window.event |
触发事件目标元素 | target | srcElement |
事件传播 | 捕捉法&&冒泡法 | 只有冒泡法 |
阻止冒泡 | stopPropagation() | 将IE-Only属性canaleBubble设为true |
阻止默认事件 | preventDefault() | 将IE-Only属性returnValue设为false |
取消监听 | removeEventListener() | detachEvent(); |
function callback(e){
e=e||window.event;
var targer=e.target||e.srcEvent;
//console.log(target.nodeName);
}
if(document.addEventListener){ //modern broswer
document.addEventListener('click',callback,false);
}else if(document.attachEvent){ //old IE
document.attachEvent('onclick',callback);
}else{ //ancient
document.οnclick=callback;
}