DOMLoaded 类似jquery的$(callback)

/**
 * Created by doyen on 2016/1/22.
 */
(function (window) {
   var userAgent = navigator.userAgent;
   var ieReg = /MSIE\s(?=(\d{1,2}.\d{1}))/;
   var ieVersion = userAgent.match(ieReg) && parseInt(userAgent.match(ieReg)[1]);

   if (ieVersion != null && ieVersion <= 8) {
      /*IE8 and lower control first method:
       * onreadystatechange
       */
      //function domLoadedHandle () {
      // if (document.readyState === "complete") {
      //    alert(2)
      //    document.detachEvent("onreadystatechange", domLoadedHandle);
      // }
      //};
      //
      //document.attachEvent("onreadystatechange", domLoadedHandle);

      /*IE8 and lower control second method:
      * document.documentElement.doScroll
      * this function generate when dom load complete
      */
      if (document.documentElement.doScroll && top) {
         doScrollCheck();
      }

      function doScrollCheck() {
         try {
            document.documentElement.doScroll("left");
         }
         catch (error) {
            setTimeout(doScrollCheck, 1);
            return "DOMContentLoaded";
         }
         DOMContentLoaded.run();
         DOMContentLoaded.callbacks = [];
      }
   } else {
      document.addEventListener("DOMContentLoaded", function () {
         DOMContentLoaded.run();
         DOMContentLoaded.callbacks = [];
      }, false);
   }
})(window);

window.DOMContentLoaded = {
   callback: function (callback, data) {
      if (typeof callback == "function") {
         this.callbacks.push({callback: callback, data: data});
      } else {
         console.warn("please translate a function, your input is:\n" + callback);
      }
   },
   callbacks: [],
   run: function () {
      var callbacks = this.callbacks;

      for (var i in callbacks) {
         if (callbacks.hasOwnProperty(i)) {
            callbacks[i].callback(callbacks[i].data);
         }
      }
   }
}
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<title></title>
<h4 id="loaded"></h4>
</head>
<body>
<script src="domLoaded.js"></script>
<script>
   function loaded1 (a) {
      document.getElementById("loaded").innerHTML = a;
   }
   function loaded2 (b) {
      alert(b);
   }
   DOMContentLoaded.callback({});
   DOMContentLoaded.callback(loaded1, "DOM Loaded");
   DOMContentLoaded.callback(loaded2, "DOM Loaded");
</script>
</body>
</html>


转载于:https://my.oschina.net/u/1992917/blog/607915

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值