第一种方法,就是通过修改Object原型的方法来申明一个attachEvent:
Object.prototype.attachEvent = function(method,func) { if(!this[method]){ this[method]=func; } else{ this[method]=this[method].attach(func); } } Function.prototype.attach=function(func){ var f=this; return function(){ f(); func(); } }
?这样就可以像在ie中一样使用attachEvent方法:
$("pop_close").attachEvent("onclick",function(){
$("pop").style.display = "none";
return false;
});
?
第二种就是自己写一个函数,判断是否支持attachEvent,如果不支持则使用firefox中的addEventListener函数,下面是类似于jQuery中的写法:
?
var myAttachEvent = function(obj, evt, fn){ if (obj.addEventListener) obj.addEventListener(evt, fn, false); else if (obj.attachEvent) obj.attachEvent("on" + evt, fn); }
?调用的时候以函数方式调用:
myAttachEvent($("pop_close"), "click", function(){
$("pop").style.display = "none";
return false;
});
$函数:
window.$ = function(id){
return document.getElementById(id);
};
另:detachEvent()兼容方法:
function myDetachEvent (obj,evt,fn) { if (obj.removeEventListener) obj.removeEventListener(evt,fn,false); else if (obj.detachEvent) obj.detachEvent('on'+evt,fn); }
?