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 相关文章推荐
javascript arguments 传递给函数的隐含参数
Aug 21 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
Jul 31 Javascript
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
jquery库文件略庞大用纯js替换jquery的方法
Aug 12 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
Jan 21 Javascript
整理关于Bootstrap表单的慕课笔记
Mar 29 Javascript
BootStrap实现文件上传并带有进度条效果
Sep 11 Javascript
Vue2.0父子组件传递函数的教程详解
Oct 16 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
Jul 26 Javascript
vue中el-upload上传图片到七牛的示例代码
Oct 19 Javascript
js实现幻灯片轮播图
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代码
2006/12/06 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
xtree.js 代码
2007/03/13 Javascript
为指定元素增加样式的js代码
2009/12/09 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
利用python循环创建多个文件的方法
2018/10/25 Python
python实现趣味图片字符化
2019/04/30 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
毕业生个人的求职信范文
2013/12/03 职场文书
应用心理学个人的求职信
2013/12/08 职场文书
家长给学校的建议书
2014/05/15 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python