因為對於支援DOM的瀏覽器來說,添加事件是用addEventListener()方法來給對象添加事件!
而對於MSIE來說則是用attachEvent()來給對象添加事件!這就使得我們必須用一個容器來裝載這兩個不同瀏覽器上對事件的處理方式!這樣我們就可以直接調用addEvent()方法來給對象添加事件了!
這不是更方便?!呵呵……
讓我們來看看吧!
/**
* 註冊一個監聽事件到元素
* @param {Object} node 所要添加事件的對象
* @param {Object} type 事件類型
* @param {Object} listener 事件方法
*/
function addEvent( node, type, listener ) {
//使用前面的方法檢查相容性以保證平穩退化
if(!(node = $(node))) return false;
if(node.attachEvent) { // 這是針對IE 的方法
node['e'+type+listener] = listener;
node[type+listener] = function(){node['e'+type+listener]( window.event );}
node.attachEvent( 'on'+type, node[type+listener] );
return true;
}else if (node.addEventListener) {
// 這是針對支援DOM的瀏覽器的方法
node.addEventListener( type, listener, false );
return true;
}
// 若兩種方法都不具備則返回false;
return false;
};
window['liujingning']['addEvent'] = addEvent;
使用方法:
比如我們要給頁面的onload()上添加事件,我們就可以這樣寫:
liujingning.addEvent(window,'load',function(Event) { //這裡寫你要寫的代碼}
我們也可以給某個ID添加事件
var getId = document.getElementById('aa');
liujingning.addEvent(getId,'load',function(Event) { //這裡寫你要寫的代碼}