firefox不支持attachEvent的解决方法

编程技术  /  houtizong 发布于 3年前   73

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

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客