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 相关文章推荐
xtree.js 代码
Mar 13 Javascript
JavaScript 常用函数
Dec 30 Javascript
jQuery中ajax的post()方法用法实例
Dec 26 Javascript
jQuery Ztree行政地区树状展示(点击加载)
Nov 09 Javascript
JS键盘版计算器的制作方法
Dec 03 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
vue多页面开发和打包正确处理方法
Apr 20 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
May 08 Javascript
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
Oct 02 Javascript
vue实现微信分享功能
Nov 28 Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 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 adodb分页实现代码
2009/03/19 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
Python datetime模块的使用示例
2021/02/02 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
中文专业毕业生自荐信
2013/10/28 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
2019初中学生入团申请书
2019/06/27 职场文书