通用addEventListener方法

假設咱們須要爲一個<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);
		});
	}
}
相關文章
相關標籤/搜索