zoukankan      html  css  js  c++  java
  • window.onload加载完毕的问题及解决方案(上)

    我们经常使用 window.onload 来处理页面,当页面加载完成做一些事情。但这个 window.onload 是页面全部加载完成,甚至包括图片,而我们实际上经常需要的是文档 DOM 加载完毕

    解决方法,

     一、Mozilla 提供了一个非公开的(undocumented)函数:
    // for Mozilla browsers
    if (document.addEventListener) {
      document.addEventListener("DOMContentLoaded", init, false);
    }

    二、对于 IE 浏览器,可以使用IE特有的 defer 属性:

    <script defer type="text/javascript">
    alert("DOM 加载完毕!")
    </script>

    具有defer属性的脚本块会在DOM 加载完毕后执行。

    非IE浏览器会忽略 defer 而直接执行 script 代码,因此,你可以有两种办法来屏蔽非IE浏览器执行这段针对IE的代码:

    1.条件注释

    <!--[if IE]>

    <script defer type="text/javascript">
    alert("DOM 加载完毕!")
    </script>

    <![endif]-->

     

     2.条件编辑 

    <script defer type="text/javascript">

    // for Internet Explorer

    /*@cc_on @*/

    /*@if (@_win32)
    alert("DOM 加载完毕!");

    /*@end @*/
    </script>

     

    三、对于Safari,这里有一个jQuery的解决方案:

     if (/WebKit/i.test(navigator.userAgent)) { // sniff
         var _timer = setInterval(function() {
              if (/loaded|complete/.test(document.readyState)) {
                   clearInterval(_timer);
                   init(); // call the onload handler
              }
          }, 10);
     }

     

  • 相关阅读:
    [underscore源码学习]——`>>` 运算符和二分查找
    【css】——三种方法实现多列等高
    【css】——根据div个数显示不同的样式
    拐点
    react.js 点击事件传递参数的方法
    react-router-dom 手动控制路由跳转
    书单
    PHP字符串操作汇总
    PHP数组操作汇总
    Yii防注入攻击笔记
  • 原文地址:https://www.cnblogs.com/honker/p/3774434.html
Copyright © 2011-2022 走看看