Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

在IE中兼容DOMContentLoaded

  DOMReady这玩意儿大家应该都很熟悉,就是jQuery里面的$(function(){}),现在我们脱离jQuery来实现它。方法有很多,但是我觉得最容易操作的莫过于doScroll这个方法了。我把这个DOMReady直接写成了函数的形式,有需要的可以直接使用了。今天实在没啥创作灵感,就写这个凑数了,如果你们想了解哪些方面的东西可以在评论中说。
//判断IE
var isIE=navigator.userAgent.match(/MSIE (\d)/i);
isIE=isIE?isIE[1]:undefined;

//注册DOMReady事件的函数
function DOMReady(){
  //先保存参数列表和参数长度
  var s=arguments,i=s.length;
  if(isIE<9)//传统浏览器使用doScroll
   //创建计时器
    var itv=setInterval(function(){
      try{//测试doScroll的运行是否错误,如果错误则DOM还没加载完成
        document.documentElement.doScroll();
        //如果没有错误,则清除计时器
        clearInterval(itv);
        //并且把传入的参数全都调用一遍
        while(i--)s[i]();
      }catch(e){};
    },1);
  else//现代浏览器使用DOMContentLoaded事件
    document.addEventListener("DOMContentLoaded",function(){
      //触发时把传入的函数全都调用一遍
      while(i--)s[i]();
    });
};

//这个是使用的例子,参数必须是函数,可以多个函数
DOMReady(function(){
  alert("DOM加载完毕←_←");
});
  由于我没有做complete判断,所以这个函数如果在DOM已经加载完成后调用是永远不会触发的,必须在DOM加载完成之前调用。
网名:
54.224.247.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^