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 相关文章推荐
删除重复数据的算法
Nov 23 Javascript
兼容FireFox 的 js 日历 支持时间的获取
Mar 04 Javascript
javascript操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
Dec 21 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 Javascript
动态设置form表单的action属性的值的简单方法
May 25 Javascript
详谈javascript精度问题与调整
Jul 08 Javascript
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
Vue组件实例间的直接访问实现代码
Aug 20 Javascript
JS实现的文字间歇循环滚动效果完整示例
Feb 13 Javascript
vue组件间的参数传递实例详解
Apr 26 Javascript
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
php购物车实现代码
2011/10/10 PHP
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
Augularjs-起步详解
2016/07/08 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
python调用Delphi写的Dll代码示例
2017/12/05 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
python判断自身是否正在运行的方法
2019/08/08 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
团干部培训方案
2014/06/03 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
房屋认购协议书
2015/01/29 职场文书
水电工岗位职责
2015/02/14 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
2019消防宣传标语!
2019/07/10 职场文书
门面租赁合同范文
2019/08/06 职场文书
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android