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 相关文章推荐
Google Map API更新实现用户自定义标注坐标
Jul 29 Javascript
一个原生的用户等级的进度条
Jul 03 Javascript
JQuery 操作/获取table具体代码
Jun 13 Javascript
js精准的倒计时函数分享
Jun 29 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
React中常见的动画实现的几种方式
Jan 10 Javascript
微信小程序实现图片上传放大预览删除代码
Jun 28 Javascript
使用Node搭建reactSSR服务端渲染架构
Aug 30 Javascript
JavaScript指定断点操作实例教程
Sep 18 Javascript
element vue Array数组和Map对象的添加与删除操作
Nov 14 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
vue调用本地摄像头实现拍照功能
Aug 14 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
解析php中call_user_func_array的作用
2013/06/07 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
js 操作css实现代码
2009/06/11 Javascript
js 匿名调用实现代码
2009/06/19 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
python生成随机图形验证码详解
2017/11/08 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
集团薪酬管理制度
2014/01/13 职场文书
八一演出活动方案
2014/02/03 职场文书
销售督导岗位职责
2015/04/10 职场文书
国情备忘录观后感
2015/06/04 职场文书
教学反思怎么写
2016/02/24 职场文书
导游词之千岛湖
2019/09/23 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Python 中的 copy()和deepcopy()
2021/11/07 Python
Python学习之迭代器详解
2022/04/01 Python