作家
登录

用JavaScript事件串连执行多个处理过程的方法

作者: 来源:www.28hudong.com 2013-03-30 03:38:39 阅读 我要评论

最近用到JavaScript 事件处理机制,找了些资料。 以前写 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 (document.all) { window.attachEvent('onload', handler1); window.attachEvent('onload', handler2); } else { window.addEventListener('load', handler1, false); window.addEventListener('load', handler2, false); } 注意:attachEvent 所指派的多个过程的执行顺序是随机的,所以这几个过程之间不要有顺序依赖。另外 attachEvent 和 addEventListener 不仅仅适用于 window 对象,其他的一些对象也支持该方法。复制代码 代码如下:function addEvent(obj, evenTypeName, fn){ if (obj.addEventListener){ obj.addEventListener(evenTypeName, fn, true); return true; } else if (obj.attachEvent){ return obj.attachEvent("on"+evenTypeName, fn); } else { return false; } }

  推荐阅读

  再谈IE中Flash控件的自动激活 ObjectWrap

我在Ajax中国上曾经对比过国内门户网站对Flash激活限制的处理。除了qq.com,各大门户网站上的flash都已经解决了激活限制的问题。淘宝的页面上也常常会使用到Flash,激活限制导致用户的交互性体验感受不够友善。 我>>>详细阅读


本文标题:用JavaScript事件串连执行多个处理过程的方法

地址:http://www.17bianji.com/kaifa2/JS/30777.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)