• 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 sunet_addEvent(obj, evType, fn),如下:

    function sunet_addEvent(obj, evType, fn)
    {
    if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
    }else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
    }else{
    return false;
    }
    }
    // 调用例子:sunet_addEvent(window,"locad",init);

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    Java中的访问控制权限
    [Java IO]05_JSON操作
    redis 系列22 复制Replication (下)
    redis 系列21 复制Replication (上)
    redis 系列20 服务器下
    redis 系列20 服务器上
    redis 系列19 客户端
    redis 系列18 事件
    redis 系列17 持久化 AOF
    redis 系列16 持久化 RDB
  • 原文地址:https://www.cnblogs.com/Athrun/p/1343290.html
Copyright © 2020-2023  润新知