javascript IE中的DOM ready应用技巧


Posted in Javascript onJuly 23, 2008

 如果只需要对DOM进行操作,那么这时就没必要等到页面全部加载了。我们需要更快的方法。
      Firefox有DOMContentLoaded事件可以轻松解决,可惜的就是IE没有。 
      MSDN关于JSCRIPT的一个方法有段不起眼的话,当页面DOM未加载完成时,调用doScroll方法时,会产生异常。那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了!

function IEContentLoaded (w, fn) {         
    var d = w.document, done = false,         
    // only fire once         
    init = function () {         
        if (!done) {         
            done = true;         
            fn();         
        }         
    };         
    // polling for no errors         
    (function () {         
        try {         
            // throws errors until after ondocumentready         
            d.documentElement.doScroll('left');         
        } catch (e) {         
            setTimeout(arguments.callee, 50);         
            return;         
        }         
        // no errors, fire         
        init();         
    })();         
    // trying to always fire before onload         
    d.onreadystatechange = function() {         
        if (d.readyState == 'complete') {         
            d.onreadystatechange = null;         
            init();         
        }         
    };         
}

这个函数是Diego Perini在07年就发布了这个方法,
而且获得了广泛认同,以至于现在许多开源框架都是借鉴这种方法,譬如JQuery中的ready。

如果以后需要用到IE的DomReady,就是他了。

用法:
IEContentLoaded(  document.getElementById("test") , test  );

function test(){  }

Javascript 相关文章推荐
jquery阻止冒泡事件使用模拟事件
Sep 06 Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 Javascript
你未必知道的JavaScript和CSS交互的5种方法
Apr 02 Javascript
js检测输入内容全为空格的方法
May 03 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
jQuery过滤选择器用法示例
Sep 12 Javascript
JavaScript队列函数和异步执行详解
Jun 19 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
Aug 04 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 Javascript
vue 动态创建组件的两种方法
Dec 31 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
css把超出的部分显示为省略号的方法兼容火狐
Jul 23 #Javascript
用JavaScript实现UrlEncode和UrlDecode的脚本代码
Jul 23 #Javascript
用js遍历 table的脚本
Jul 23 #Javascript
JavaScript 版本自动生成文章摘要
Jul 23 #Javascript
javascript 支持ie和firefox杰奇翻页函数
Jul 22 #Javascript
IE8 引入跨站数据获取功能说明
Jul 22 #Javascript
兼容多浏览器的字幕特效Marquee的通用js类
Jul 20 #Javascript
You might like
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
2015/08/21 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
Python基本语法经典教程
2016/03/11 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
荷兰本土平价百货:HEMA
2017/10/23 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
Ruby如何定义一个类
2012/10/08 面试题
美术课外活动总结
2014/07/08 职场文书
婚内房产协议书范本
2014/10/02 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
综合测评个人总结
2015/03/03 职场文书
担保贷款承诺书
2015/04/30 职场文书
预备党员群众意见
2015/06/01 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
redis缓存存储Session原理机制
2021/11/20 Redis
Java数组详细介绍及相关工具类
2022/04/14 Java/Android