firefox不支持attachEvent的解决方法

第一种方法,就是通过修改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);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值