IE中JavaScript DOM ready应用技巧

开发 前端
有时候,如果我们只需要对DOM进行操作,那么这时就没必要等到页面全部加载了,我们需要更快的方法,当然,Firefox有DOMContentLoaded事件可以轻松解决,那么IE下怎么办呢?

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

51CTO推荐阅读: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(){ } 

 

【编辑推荐】

  1. Firefox完全兼容Javascript脚本方法
  2. JavaScript跨浏览器兼容测试三步走
  3. Javascript解决常见浏览器兼容问题
责任编辑:王晓东 来源: 编程联盟
相关推荐

2010-09-28 14:52:57

JavaScriptDOM

2010-09-10 16:21:58

JavaScript

2010-09-08 16:50:11

JavaScriptDOM操作

2010-06-07 16:55:00

JavaScript

2010-09-08 15:13:09

Node节点Node属性

2010-10-08 10:03:52

JavaScript图像

2010-08-31 09:24:29

FireFoxIECSS

2010-09-08 17:26:46

JavaScript

2010-09-28 14:12:50

Javascript

2016-04-06 11:29:58

JavaScriptDOM操作

2021-09-09 10:26:26

Javascript 文档对象前端

2009-06-18 12:21:07

javascriptdom

2010-09-13 17:12:55

JavaScript

2010-09-13 14:24:17

JavaScript

2010-01-25 11:28:59

2010-08-17 15:21:17

IEFirefoxHTML

2010-09-15 09:21:11

IEirefoxJavascript

2010-01-20 16:13:15

2010-08-19 10:56:55

JSIE6IE7

2017-07-19 14:26:01

前端JavaScriptDOM
点赞
收藏

51CTO技术栈公众号