以前写JavaScript脚本时,事件都采用object.event = handler的方式绑定。这种方式对于Internet Explorer、Mozilla/Firefox和Opera来说很通用。但有一个问题,这种方式只能一个事件对应一个事件处理过程。如果希望一个事件可以依次执执行多个处理过程,就不好用了。
Internet Explorer从5.0开始,提供了一个attachEvent方法,使用这个方法,可以一个事件,绑定多个处理过程。但是Mozilla/Firefox并不支持这个方法,它使用另外一个方法addEventListener。它们之间有少许区别,在attachEvent方法中,事件是以"on"开头的,而addEventListener,事件不是以"on"开头,另外,addEventListener还有第三个参数,一般指定false就可以。
因此,在程序中,给一个事件指派多个处理过程的话。需要根据不同的浏览器,选择使用attachEvent和addEventListener。示例如下:
if (window.attachEvent) { window.attachEvent("onload", foo); } else if (window.addEventListener) { window.addEventListener("load", foo, false); } function foo() { alert("ok"); }