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.hantingmc.com/qtweb/news10/454860.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联