window.onload 加载完毕的问题及解决方案(上)

  解决方法,

  一、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);

  }