RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
IE中JavaScriptDOMready应用技巧

有时候,如果我们只需要对DOM进行操作,那么这时就没必要等到页面全部加载了,我们需要更快的方法。Firefox有DOMContentLoaded事件可以轻松解决,可惜的就是IE没有。

推荐阅读:Javascript解决常见浏览器兼容问题

MSDN关于JavaScript的一个方法有段不起眼的话,当页面DOM未加载完成时,调用doScroll方法时,会产生异常。那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了!

 
 
 
  1. function IEContentLoaded (w, fn) {   
  2. var d = w.document, done = false,   
  3. // only fire once   
  4. init = function () {   
  5. if (!done) {   
  6. done = true;   
  7. fn();   
  8. }   
  9. };  
 
 
 
  1. // polling for no errors   
  2. (function () {   
  3. try {   
  4. // throws errors until after ondocumentready   
  5. d.documentElement.doScroll('left');   
  6. } catch (e) {   
  7. setTimeout(arguments.callee, 50);   
  8. return;   
  9. }   
  10. // no errors, fire   
  11. init();   
  12. })();  
 
 
 
  1. // trying to always fire before onload   
  2. d.onreadystatechange = function() {   
  3. if (d.readyState == 'complete') {   
  4. d.onreadystatechange = null;   
  5. init();   
  6. }   
  7. };   

这个函数是Diego Perini在07年就发布了这个方法,而且获得了广泛认同,以至于现在许多开源框架都是借鉴这种方法,譬如jQuery中的ready。如果以后需要用到IE的DomReady,就是它了。用法:

 
 
 
  1. IEContentLoaded( document.getElementById("test") , test );   
  2. function test(){ } 

本文题目:IE中JavaScriptDOMready应用技巧
新闻来源:http://www.jxjierui.cn/article/dphpsch.html