IE中JavaScript DOM ready应用技巧
有时候,如果我们只需要对DOM进行操作,那么这时就没必要等到页面全部加载了,我们需要更快的方法。Firefox有DOMContentLoaded事件可以轻松解决,可惜的就是IE没有。
推荐阅读:Javascript解决常见浏览器兼容问题
MSDN关于JavaScript的一个方法有段不起眼的话,当页面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(){ }
【编辑推荐】
- Firefox完全兼容Javascript脚本方法
- JavaScript跨浏览器兼容测试三步走
- Javascript解决常见浏览器兼容问题
版权声明:
作者:后浪云
链接:https://www.idc.net/help/396161/
文章版权归作者所有,未经允许请勿转载。
THE END