js中对于添加事件监听者addEventListener和attachEvent

在前端开发中处理不同浏览器之间的兼容问题时家常便饭,ie老版本总是一个奇葩的存在,每次敲代码都得考虑ie老版本的兼容问题,今天我想说一下添加事件监听者addEventListener和attachEvent

一般浏览器添加事件监听者用addEventListener方法,打比方说我们需要监听文档是否加载完毕,如果加载完毕就调用对应的函数,一般会使用window.onload方法,但是这个方法效率不高,所以我们需要使用别的方式来加载,例如我们监听DOMContentLoaded这个事件

   function ready(fn) {
       if(document.addEventListener){
           document.addEventListener('DOMContentLoaded',fn);
       }
   }

对于ie老版本ie8以及以下对应的addEventListener不能使用,我们可以使用attachEvent这个方法来监听对应的onreadystatechange事件

一般来说readystate有四种状态:
uninitialized - 还未开始载入
loading - 载入中
interactive - 已加载,文档与用户可以开始交互
complete - 载入完成
我们只需要监听载入完成

var ready = function (fn) {
// 进来直接判断状态是否已经加载完毕,如果加载完毕就直接调用对应的函数
            if(document.readyState === 'complete'){
                fn();
            }
            if(document.addEventListener){
                document.addEventListener('DOMContentLoaded',fn);
            }else {
                document.attachEvent('onreadystatechange',function () {
                    if(document.readyState === 'complete'){
                        fn();
                    }
                })
            }
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 以下文章为转载,对理解JavaScript中的事件处理机制很有帮助,浅显易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy阅读 8,170评论 1 10
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 11,944评论 1 6
  • 什么是事件: 我们可以简单的把事件理解为浏览器的感知系统。比如说:他可以感觉到用户是否点击(click)了页面、鼠...
    张松1366阅读 11,792评论 1 6
  • JavaScript 程序采用了异步事件驱动编程模型。在这种程序设计风格下,当文档、浏览器、元素或与之相关的对象发...
    劼哥stone阅读 5,028评论 3 11
  • 过年了 !最高兴事情就是和小伙伴一起放烟花爆竹 还有就是去外面旅游
    任紫菡阅读 2,256评论 0 0