javascript IE中的DOM ready应用技巧

  如果只需要对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(){  }