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 相关文章推荐
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
JavaScript中的Math.E属性使用详解
Jun 12 Javascript
分享使用AngularJS创建应用的5个框架
Dec 05 Javascript
JQuery+EasyUI轻松实现步骤条效果
Feb 22 Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 Javascript
JS实现移动端实时监听输入框变化的实例代码
Apr 12 Javascript
Javascript实现信息滚动效果
May 18 Javascript
vue中锚点的三种方法
Jul 06 Javascript
Angular父子组件通过服务传参的示例方法
Oct 31 Javascript
javascript function(函数类型)使用与注意事项小结
Jun 10 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
Feb 03 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
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代码的53条建议
2008/03/27 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
js实现掷骰子小游戏
2019/10/24 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
关于Java finally的面试题
2016/04/27 面试题
《小小雨点》教学反思
2014/02/18 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书