• attachEvent与addEventlistener兼容性


    以前写 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 对象,其他的一些对象也支持该方法。

    \\\\\\\\\\\\

    if (element.addEventListener)
    element.addEventListener(eventType, handler, capture);
    else if (element.attachEvent)
    element.attachEvent("on" + eventType, handler);


    转载于:https://www.cnblogs.com/YuyuanNo1/p/9252335.html

  • 相关阅读:
    iOS设计模式之一:MVC模式和单例模式
    高清图标搜索引擎
    中国地址英文书写格式(转载)
    iOS设置状态栏样式,statusBarStyle
    关于iOS启动页launchImage和各个屏幕使用的分辨率
    使用终端命令行将本地项目上传到Github
    iOS项目梳理-第一天- 项目框架搭建
    静态库合成
    iOS中的通知
    iOS UserSize Classes
  • 原文地址:https://www.cnblogs.com/twodog/p/12136594.html
Copyright © 2020-2023  润新知