惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
美团技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
月光博客
月光博客
宝玉的分享
宝玉的分享
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
J
Java Code Geeks
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
Vercel News
Vercel News
博客园 - 聂微东

博客园 - 电工男

关于电感,电抗器的Q值(品质因数) 好久不写博了. 精辟对联 escape、encodeURI 、encodeURIComponent 编码与解码 Content-Disposition中filename字段的字符编码技巧[转] 转! 主键的使用 重载,继承,重写和多态的区别 webcast不更新了? sql server 日期类型 比较 IDENT_CURRENT、@@IDENTITY 和 SCOPE_IDENTITY 返回的标识值 SQL中判断字符串中包含字符的方法 ASP.NET生成的HTML代码 win7禁用休眠,献给c盘空间不足的朋友. SQLServer2005和2008的分页技术比较[转] 在ASP.NET 的服务器端控件中有三种关于 ID 的属性 jQuery对<img>赋值 MVC JQuery 为<input>赋值 jquery怎么创建一个img标签 asp.net中弹出确认窗口(confirm),实现删除确认的功能
浏览器兼容性系列--浅谈window.attachEvent
电工男 · 2014-05-31 · via 博客园 - 电工男

以前写 JavaScript 脚本时,事件都是采用
object.event = handler;
的方式初始化。这种方式对于 Internet Explorer、Mozilla/Firefox 和 Opera 来说很通用。但是有一个问题就是,这种方式只能一个事件对应一个事件处理过程。如果希望一个事件可以依次执行多个处理过程就不好用了。

但是 Internet Explorer 从 5.0 开始提供了一个 attachEvent 方法,使用这个方法,就可以给一个事件指派多个处理过程了。attachEvent 对于目前的 Opera 也适用。但是问题是 Mozilla/Firefox 并不支持这个方法。但是它支持另一个 addEventListener 方法,这个方法跟 attachEvent 差不多,也是用来给一个事件指派多个处理过程的。但是它们指派的事件有些区别,在 attachEvent 方法中,事件是以 “on” 开头的,而在 addEventListener 中,事件没有开头的 “on”,另外 addEventListener 还有第三个参数,一般这个参数指定为 false 就可以了。

因此要想在你的程序中给一个事件指派多个处理过程的话,只要首先判断一下浏览器,然后根据不同的浏览器,选择使用 attachEvent 还是 addEventListener 就可以了。实例如下:

            if (window.attachEvent) { 
                window.attachEvent("onload", remove); 
            } else if (window.addEventListener) { 
                window.addEventListener("load", remove, false);   
            }             
            function remove() { 
                var div = document.getElementByIdx_x("divprogressbar"); 
                document.body.removeChild(div); 
            } 

=============或者也可以用

           if (document.all){window.attachEvent('onload',remove)}//IE
           else{window.addEventListener('load',remove,false);} //FireFox

注意:attachEvent 所指派的多个过程的执行顺序是随机的,所以这几个过程之间不要有顺序依赖。另外 attachEvent 和 addEventListener 不仅仅适用于 window 对象,其他的一些对象也支持该方法。