zoukankan      html  css  js  c++  java
  • 利用doScroll在IE浏览器里模仿DOMContentLoaded

    稍微了解一点框架的事件绑定的都知道 window.onload 事件需要在页面所有内容(包括图片、flash、iframe等)加载完后,才执行,但往往我们更希望在 DOM 一加载完就执行脚本,而各大框架都提供了这样的方法,今天就讨论下其中的原理。 标准浏览器都提供了一个DOMContentLoaded事件来实现,我们只需要注册相应的事件就可以了,而在IE(6~8)浏览器里则需要模仿实现。

    IE浏览器里最早的解决方案是绑定document.onreadystatechange事件,判断readyState是否为complete,但是当页面有iframe时就无法及时触发了(等到iframe加载完毕readyState的值才会变为complete) 而之后有了一种利用 doScroll() 方法来模拟 addDOMLoadEvent 事件的方案,且现在主流的 JavaScript 框架(JQuery、YUI,kissy等)基本都采用的这一解决方案。基本思路是不断的判断doScroll,如果没有抛出异常,那么就意味着文档加载完毕了。

     1 /*doScroll判断ie6-8的DOM是否加载完成
     2  *
     3  *@param    null
     4  *@execute  doScroll判断DOM是否加载完成
     5  */
     6 function doScroll(){
     7     try{
     8         document.documentElement.doScroll();
     9     }
    10     catch(error){
    11         return setTimeout(doScroll,20);
    12     };
    13 };
  • 相关阅读:
    Java实现分页
    研发技能列表
    shell 函数
    养生
    再谈创新
    写代码注意事项
    排查问题方法
    简历撰写
    jenkins
    架构
  • 原文地址:https://www.cnblogs.com/guojiao1600/p/5436653.html
Copyright © 2011-2022 走看看