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 入门教程 [翻译] 推荐
Aug 17 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 Javascript
js 设置选中行的样式的实现代码
May 24 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
Jun 10 Javascript
Js制作点击输入框时默认文字消失的效果
Sep 05 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
Aug 05 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
vue树形结构获取键值的方法示例
Jun 21 Javascript
Vue 用Vant实现时间选择器的示例代码
Oct 25 Javascript
如何构建 vue-ssr 项目的方法步骤
Aug 04 Javascript
vscode+gulp轻松开发小程序的完整步骤
Oct 18 Javascript
Vue + ts实现轮播插件的示例
Nov 10 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/08/06 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
js实现漫天星星效果
2017/01/19 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python中argparse模块用法实例详解
2015/06/03 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
python3.5仿微软计算器程序
2020/03/30 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
详解Anaconda 的安装教程
2020/09/23 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
利用python进行文件操作
2020/12/04 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
应届毕业生求职信范文分享
2013/12/26 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
教师演讲稿开场白
2014/08/25 职场文书
岳庙导游词
2015/02/04 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
Node.js实现断点续传
2021/06/23 Javascript
总结python多进程multiprocessing的相关知识
2021/06/29 Python