码迷,mamicode.com
首页 > 其他好文 > 详细

一个通用onReady函数的实现

时间:2014-08-29 00:08:26      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:blog   os   java   io   ar   2014   cti   html   log   

define([], function(){
 
    function onReady(fn) {
        var DOC = document,
            html = DOC.documentElement,
            W3C = document.dispatchEvent;
        //FF以前是没有readyState属性的
        //判断body是否存在来决定DOM文档是否加载完毕
        if (!DOC.readyState) {
        var readyState = DOC.readyState = DOC.body ? "complete" : "loading";
        }
        //如果页面已经完全载入完毕直接执行回调函数
        if (DOC.readyState === "complete") {
            setTimeout(fn);
        //现代游览器和IE>=IE9
        } else if (W3C) {
            DOC.addEventListener('DOMContentLoaded', function(){
                if (readyState) {
                    DOC.readyState = 'complete';
                }
                fn();
            }, false);
        } else {
            ieReady(fn);
        }
    }

    function ieReady(fn) {
       try {
           //处理iframe中引入的页面在IE下无法通过doScroll判断DOM知否加载完毕
           if (self !== top && self.document.readyState !== 'complete') {
               setTimeout(function(){
                     ieReady.call(window, fn)
                 })
           } else if (self !== top && self.document.readyState === 'complete') {
               arguments[0]();
           } else {
               document.documentElement.doScroll('left');
                 arguments[0]();
           }
         } catch (e) {
             setTimeout(function(){
                 ieReady.call(window, fn)
             })
       }
   };

   AS.extend({
       'onReady': onReady
   });
   return onReady;
})


一个通用onReady函数的实现

标签:blog   os   java   io   ar   2014   cti   html   log   

原文地址:http://blog.csdn.net/songzheng_741/article/details/38909191

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!