假設咱們須要爲一個<a id="aEle" href="http://www.baidu.com" />添加點擊事件處理函數, 通常狀況是這樣的:javascript
var aEle = document.getElementById('aEle'); aEle.addEventListener('click', function(e){ console.log(e.target); e.preventDefault(); });
若是用jquery,咱們能夠更簡單:java
$('#aEle').click(function(e){ console.log(e.target); e.preventDefault(); });
可是上面的兩段代碼在IE8及如下的IE瀏覽器版本中卻失效。jquery
在IE8及如下IE瀏覽器中,咱們必須用e.srcElement來替代e.target, 沒有preventDefault方法,咱們只能設置e.returnValue=false來達到相同的目的。下面是一個通用的處理方法:瀏覽器
var aEle = document.getElementById('aEle'); addEventListener(aEle,'click',function(e){ console.log(e); e.preventDefault(); }); function addEventListener(element,event,handler){ if(element.addEventListener){ element.addEventListener(event,handler); }else if(element.attachEvent){ element.attachEvent('on'+event, function(e){ e.preventDefault = function(){ e.returnValue = false; }; handler.call(element, e); }); } }