`

老外写的页面dom加载完成后执行的事件

    博客分类:
  • js
阅读更多

window..onload的是页面加载完成后执行的事件,而且winodw.onload不能多次执行,jquery的$(fn)解决了这个问题,但是不使用jquery的情况下呢?以下是老外写的解决办法

/*
 * (c)2006 Jesse Skinner/Dean Edwards/Matthias Miller/John Resig
 * Special thanks to Dan Webb's domready.js Prototype extension
 * and Simon Willison's addLoadEvent
 *
 * For more info, see:
 * http://www.thefutureoftheweb.com/blog/adddomloadevent
 * http://dean.edwards.name/weblog/2006/06/again/
 * http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
 * http://simon.incutio.com/archive/2004/05/26/addLoadEvent
 * 
 *
 * To use: call addDOMLoadEvent one or more times with functions, ie:
 *
 *    function something() {
 *       // do something
 *    }
 *    addDOMLoadEvent(something);
 *
 *    addDOMLoadEvent(function() {
 *        // do other stuff
 *    });
 *
 */
 
addDOMLoadEvent = (function(){
    // create event function stack
    var load_events = [],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init = function () {
            done = true;

            // kill the timer
            clearInterval(load_timer);

            // execute each function in the stack in the order they were added
            while (exec = load_events.shift())
                exec();

            if (script) script.onreadystatechange = '';
        };

    return function (func) {
        // if the init function was already ran, just run this function now and stop
        if (done) return func();

        if (!load_events[0]) {
            // for Mozilla/Opera9
            if (document.addEventListener)
                document.addEventListener("DOMContentLoaded", init, false);

            // for Internet Explorer
            /*@cc_on @*/
            /*@if (@_win32)
                document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
                script = document.getElementById("__ie_onload");
                script.onreadystatechange = function() {
                    if (this.readyState == "complete")
                        init(); // call the onload handler
                };
            /*@end @*/

            // for Safari
            if (/WebKit/i.test(navigator.userAgent)) { // sniff
                load_timer = setInterval(function() {
                    if (/loaded|complete/.test(document.readyState))
                        init(); // call the onload handler
                }, 10);
            }

            // for other browsers set the window.onload, but also execute the old window.onload
            old_onload = window.onload;
            window.onload = function() {
                init();
                if (old_onload) old_onload();
            };
        }

        load_events.push(func);
    }
})();

 

分享到:
评论
1 楼 fumes 2011-05-09  
吉尔吉尔 和如何如何

相关推荐

    老外写的焊接机器人程序.zip西门子PLC编程实例程序源码下载

    老外写的焊接机器人程序.zip西门子PLC编程实例程序源码下载老外写的焊接机器人程序.zip西门子PLC编程实例程序源码下载老外写的焊接机器人程序.zip西门子PLC编程实例程序源码下载老外写的焊接机器人程序.zip西门子PLC...

    老外写的ADO封装类

    老外写的ADO封装类,超全面,使用简单。经过长期测试,使用中相当稳定。

    一个老外写的HtmlEditor

    【标题】"一个老外写的HtmlEditor"是一个国外开发者创建的HTML编辑器,它提供了丰富的功能,便于用户创建和编辑HTML文档。这个编辑器可能是开源的或者免费供个人使用,旨在简化网页设计过程,提高开发效率。 【描述...

    老外写的一个flash时间类

    这个"老外写的一个flash时间类"旨在提供一个更精确的时间控制工具,以改善标准的ActionScript 3(AS3)Timer类可能存在的精度问题。下面我们将深入探讨这个时间类的相关知识点。 1. **ActionScript 3 Timer类**: ...

    IOCP.zip_IOCP_iocp 老外_完成端口_完成端口 老外

    完成端口 网络模型 实现 程序 老外写的很好的一个程序

    老外写的:中国工程师写英文时最常犯的错误

    此外,“O(nlogn)”在英文中应写为“O(n log n)”,以符合国际标准格式。 5. **过度使用被动语态**: - **例子**:“It was observed that the method performs well under certain conditions.” - **改进后**:...

    老外写的翻页效果 leaves

    老外写的翻页效果 leaves老外写的翻页效果 leaves

    Leon Steijger 老外写的程序软件

    老外写的程序软件,老外写的程序软件,老外写的程序软件老外写的程序软件

    老外写的文件粉碎源码

    老外写的文件粉碎源码

    老外写的ListView

    【标题】:“老外写的ListView” 在Android开发中,ListView是一个非常重要的视图组件,它允许开发者在屏幕上显示大量的数据,通常以列表的形式呈现。这个标题提到的是一个由非中国开发者(老外)编写的ListView...

    老外写的3DES不错

    标题中的“老外写的3DES不错”表明这是一个关于3DES加密算法的外国作者编写的代码或教程。3DES,即三重数据加密标准(Triple DES),是基于原始数据加密标准(DES)的一种加强版本,旨在提供更强的安全性。在描述中...

    3ds文件读写库老外写的

    标题中的“3ds文件读写库老外写的”指的是一种专门用于处理3DS格式文件的库,由非中文国家的开发者编写。3DS文件格式是Autodesk 3ds Max软件广泛使用的三维模型存储格式,包含了场景、模型、材质、纹理、灯光等信息...

    老外写的类似Msn酷控件原码

    【标题】"老外写的类似Msn酷控件原码" 涉及到的核心知识点主要是MSN Messenger(或简称MSN)客户端的用户界面组件开发,尤其是控件的创建与实现。MSN作为一款曾经广泛使用的即时通讯软件,其界面设计和交互体验在...

    ifix5.0老外写的例子

    标题 "ifix5.0老外写的例子" 指向的是一个使用IFix 5.0版本开发的应用程序示例,特别关注于水处理领域的工业自动化控制。IFix(Industrial Interactive Fix)是GE Digital推出的一款先进的组态软件,用于构建、监控...

    基于PHP的Mysql 老外写的类似祝福墙的Ajax程序.zip

    该压缩包文件“基于PHP的Mysql 老外写的类似祝福墙的Ajax程序.zip”包含了一个使用PHP、MySQL和Ajax技术开发的互动祝福墙应用。这个应用可能是一个示例或者教程,帮助开发者学习如何结合这些技术来创建动态、实时的...

    老外写的matlab 分割算法2

    老外写的分割算法好 还不错 有需要的下来看看

    老外写的嵌入式测试书

    《老外写的嵌入式测试书》是一本深入探讨嵌入式系统测试的专业书籍,它由国外资深专家撰写,以其全面性和深度深受测试人员推崇。这本书不仅覆盖了基础的测试理论,还深入到了嵌入式系统的独特测试挑战,旨在帮助读者...

    老外写的一个ASP.NET聊天室

    在“老外写的一个ASP.NET聊天室”中,我们可以探讨ASP.NET在实现在线实时交流平台中的应用。 首先,聊天室的核心功能包括用户注册、登录、发送和接收消息。在ASP.NET中,可以使用C#或VB.NET作为后端编程语言来处理...

    老外写的42个QT例子

    这个"老外写的42个QT例子"压缩包,可能包含一系列用于学习和理解QT编程的示例项目。这些例子通常会涵盖QT库中的不同模块和功能,帮助初学者逐步掌握QT开发的基本概念和技巧。以下是可能包含的一些关键知识点: 1. *...

    老外写的图表类

    【标题】"老外写的图表类"是一款专用于生成各种数据可视化图表的库,它能够帮助程序员轻松地创建出美观的饼图、柱状图等多种图表类型。这个库的亮点在于其精美的设计和易用性,使得数据分析结果能够以直观、吸引人的...

Global site tag (gtag.js) - Google Analytics