JS收藏——DOMReady
来源:互联网 发布:社交网络有哪些 编辑:程序博客网 时间:2024/06/16 10:11
浏览器渲染流程
我们编写的JS脚本,需要在浏览器把DOM树结构构建完成以后,才能被正确运行。
如果JS脚本加载完了,页面元素还未被加载成功,则会发生无法运行的处境。
检测方法
onload
在页面的所有资源加载完成时,window对象上会触发一个onload事件。
但是,当资源过多过大时,onload会出现比较严重的延迟问题,严重影响用户体验。
DOMContentLoaded 事件(IE9+)
DOMContentLoaded事件在DOM内容加载完后就触发,无需等待其他资源的加载完成。
然而,万恶的IE低版本并不支持DOMContentLoaded 事件,所以我们只好利用它的onreadystatechange事件以及doScroll方法。
脚本储备
function myReady(fn){ //对于现代浏览器,对DOMContentLoaded事件的处理采用标准的事件绑定方式 if ( document.addEventListener ) { document.addEventListener("DOMContentLoaded", fn, false); } else { IEContentLoaded(fn); } //IE模拟DOMContentLoaded function IEContentLoaded (fn) { var d = window.document; var done = false; //只执行一次用户的回调函数init() var init = function () { if (!done) { done = true; fn(); } }; (function () { try { // DOM树未创建完之前调用doScroll会抛出错误 d.documentElement.doScroll('left'); } catch (e) { //延迟再试一次~ setTimeout(arguments.callee, 50); return; } // 没有错误就表示DOM树创建完毕,然后立马执行用户回调 init(); })(); //监听document的加载状态 d.onreadystatechange = function() { // 如果用户是在domReady之后绑定的函数,就立马执行 if (d.readyState == 'complete') { d.onreadystatechange = null; init(); } } } }
阅读全文
0 0
- JS收藏——DOMReady
- 自己构建一个domReady.js
- domReady
- JS收藏——cookie
- [转] 主流JS框架中DOMReady事件的实现
- 主流JS框架中DOMReady事件的实现
- 主流JS框架中DOMReady事件的实现
- 主流JS框架中DOMReady事件的实现
- 主流JS框架中DOMReady事件的实现
- 代码收藏——js+asp 的屏幕滚动脚本
- js脚本——添加收藏、设置首页
- JS收藏
- js收藏
- JS收藏
- js 收藏
- 收藏js
- JS收藏
- js收藏
- Android中WebView使用6,js调java实现播放视频
- 对于原码、反码、补码的理解
- ARM Linux 设备树(1)
- java list<泛型> 一行代码实现去重方式总结
- 感觉刚学会MVC-老生再谈一谈
- JS收藏——DOMReady
- 开源新项目GitTest.com,欢迎大牛,小牛,菜鸟,同学加入发PR
- lombok在idea中插件的安装以及各注解的详细介绍
- 安卓学习笔记(1)-2048游戏遇到的问题与解决方案
- angular项目总结
- 文章标题
- javaWeb项目发布到linux服务器上以及运行项目
- 字符集和字符编码(Charset & Encoding)
- 在windows 7中vagrant up 无反应,没任何信息输出