`
goodjin
  • 浏览: 33243 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

页面载入过程分析和包装页面load事件

    博客分类:
  • js
阅读更多

页面载入过程分析:

 1.HTML is parsed.
 2.External scripts/style sheets are loaded.
 3.Scripts are executed as they are parsed in the document.
 4.HTML DOM is fully constructed.
 5.Images and external content are loaded.
 6.The page is finished loading.

在一般情况下,第四个步骤完成后我们就可以看作是页面载入完成,可以执行load事件的代码了。但是在浏览器的load事件中,要等第六个步骤完成后才会响应该事件,所以,为了更快地响应,我们可以每过一定时间检查html是否已载入完成,如果已经完成,则马上响应事件,不必要等待第五个步骤了。

通过包装,可以达到以下几个要求:

1.支持添加任意多个响应事件,这个跟addEventListener类似。

2.可以在任何时候添加,这是一个功能增强,即在load事件已经响应后还能补充一些响应代码。

为达到这几个目的,可以定义两个方法,一个用于保存和处理事件响应代码,另一个用于响应load事件,执行代码。

//通过此方法可以添加任意事件响应代码

function domReady(func){

    //页面已载入,立即执行
    if(domReady.done) return func();

    //已经有响应代码了,加入到响应队列
    if(domReady.timer){
        domReady.ready.push(func);
    }else{

        //还未有响应代码加入,为window添加load事件,如果load事件先响应则停止检测,直接执行响应代码

        if(window.addEventListener){

            window.addEventListener("load",isDomReady,false);

        }else{

            window.attachEvent("onload",isDomReady);

        }
        //将响应代码加入到响应队列,并以13毫秒为间隔定时检查html页面是否载入完毕。
        domReady.ready=[func];
        domReady.timer=setInterval(isDomReady,13);
    }
};

//响应load事件,执行代码
function isDomReady(){

    //已经响应过了,直接返回,以避免响应多次
    if(domReady.done)return false;

    //通过检测document对象和它的属性判断html页面是否已经载入完毕并可以通过dom的方法处理页面
    if ( document && document.getElementsByTagName && document.getElementById && document.body ) {

        //页面已载入完成,dom结构也生成可以使用了,清除定时检测器,不再检测,并把响应标记为已完成
        clearInterval( domReady.timer );
        domReady.timer = null;

        domReady.done = true;

        //按加入顺序执行响应代码
        for ( var i = 0; i < domReady.ready.length; i++ )
            domReady.ready[i]();

        //清除响应队列,
        domReady.ready = null;      
    }
};

 

这样,通过调用domReady方法便可以向页面的load事件中加入任意多个响应方法了。

1
0
分享到:
评论

相关推荐

    JS 页面载入等待特效 javascript

    2. **AJAX请求**:如果页面载入特效是在异步请求数据的过程中出现,则涉及到AJAX请求。 3. **CSS样式**:使用CSS来定义加载提示的外观样式,如旋转的圈圈、文字提示等。 4. **事件监听**:监听页面加载完成的事件...

    页面载入等待代码(用javascript技术实现)

    2. **load事件**:这个事件在页面及所有资源都加载完成后触发。如果等待代码需要在所有内容都加载完毕后显示,可以绑定到此事件: ```javascript window.addEventListener('load', function() { // 在这里添加页面...

    Ajax页面载入等待特效

    Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。...通过深入研究和实践,你将能够掌握Ajax页面载入等待特效的实现,提升你的Web开发技能。

    页面载入进度条(实用)

    通过监听`window.load`事件或`XMLHttpRequest`的`progress`事件,可以获取到页面或特定资源的加载进度。例如,使用`window.onload`事件: ```javascript window.onload = function() { updateProgress(100); };...

    页面载入缓冲效果,页面缓冲特效

    在网页设计中,用户体验是至关重要的一个环节,而页面载入缓冲效果就是提升用户体验的一种巧妙方式。...通过上述方法和技巧,我们可以创造出更加优雅且高效的页面载入缓冲效果,提升网站的整体用户体验。

    常用的页面载入提示效果.rar

    总之,"常用的页面载入提示效果"这个资源可以帮助开发者了解并实践各种JavaScript加载提示技术,通过这些技巧,他们可以提升网页的用户体验,使得页面加载过程更加友好和吸引人。在实际开发中,根据项目需求和用户...

    页面载入时事件.rp

    页面载入时事件.rp

    页面载入等待.rar

    在网页设计和开发中,页面载入等待是一个关键的用户体验因素。"页面载入等待"这个主题涉及到如何优雅地处理用户在等待页面完全加载时的体验。在这个场景中,我们通常会利用JavaScript(JS)来实现一些动态效果,以...

    页面载入等待TEXIAO

    通过以上分析,我们可以看到页面载入等待不仅涉及到网络和服务器层面的技术,还与前端开发密切相关。优化页面载入速度是一项综合性工作,需要从前端代码编写、资源管理到服务器配置等多个方面综合考虑。

    用Jquery.load载入页面实现局部刷新

    这是因为在原始页面中已经定义了一套CSS样式和JavaScript事件,而新的内容可能也包含了一套自己的样式和脚本。加载进来的页面如果包含完整的HTML结构(如和标签),就会导致页面内存在两个相同的HTML结构,这种做法...

    JS实现页面载入时随机显示图片效果

    页面的body部分需要设置适当的背景色和文字颜色,并在页面加载完成后(即OnLoad事件发生时)调用swapPic函数。这样,当用户访问网页时,浏览器会在页面加载完毕后立即显示一个随机的图片。 通过上述步骤,我们就...

    ASP.NET页面生命周期描述

    这个过程主要是初始化控件,每次页面载入执行这个初始过程,包括第一次和以后的 Postback。在这里面可以访问控件,但是这里面的控件值不是我们期待的控件里的值,他只是一个控件的初始值(默认值)。例如,一个 ...

    bootstrap页面载入按钮插件

    这个插件允许在页面数据正在获取或处理时显示一个具有反馈功能的加载按钮,提升用户对加载过程的认知,同时保持页面界面的整洁和专业。 页面载入是网页生命周期中的关键阶段,用户在此期间可能会因为等待时间过长而...

    我自己写的可以触发事件,载入其他页面的JS

    标题中的“我自己写的可以触发事件,载入其他页面的JS”指的是一个自定义的JavaScript功能,它可以监听并响应特定的事件,并在事件触发时动态加载外部网页内容。不同于jQuery的`load()`方法,这个功能可能提供了更为...

    利用Ajax提高页面载入速度

    为解决这一问题,Ajax(Asynchronous JavaScript and XML)技术应运而生,它通过异步通信和局部页面更新,极大地提高了页面载入速度和服务器响应灵敏度。 #### Ajax技术的核心优势 Ajax技术的主要优势在于其异步...

    Linux 2.6内核的LKM载入过程源码分析

    通过对Linux 2.6内核下LKM载入过程的深入分析,我们可以看到该过程不仅更加简洁高效,而且更易于理解和维护。这对于Linux驱动开发者来说无疑是一大福音。理解LKM的载入机制有助于解决实际开发中遇到的各种问题,并为...

    Ajax页面载入,等待特效

    总的来说,Ajax页面载入的等待特效是提高用户体验的重要手段,通过巧妙的设计和编程技巧,我们可以创造出各种吸引人的加载效果,使得用户在等待过程中不会感到不耐烦,从而提升整体的网站或应用的品质。

    用Jquery.load载入页面后样式没了页面混乱的解决方法

    在使用jQuery的`.load()`方法进行页面部分刷新时,可能会遇到一些问题,如样式丢失、页面结构混乱等。这些问题通常是由于不正确的使用...遵循这些步骤,可以有效地避免因使用`.load()`而导致的样式丢失和页面混乱问题。

    jQuery 页面载入进度条 (必有一款适合你----综合搜集版)

    总之,jQuery提供了强大的工具来创建页面载入进度条,通过监听和处理页面加载事件,我们可以实现可视化反馈,提高用户体验。`MinmyLazyload.js`可能进一步扩展了这个概念,将懒加载与进度条结合起来,让用户体验更加...

    Linux下ELF可执行文件载入过程源码分析

    ### Linux下ELF可执行文件载入过程源码分析 #### 引子 在Linux操作系统中,每一个可执行文件在被执行之前都需要经过一系列复杂的加载过程。这个过程涉及到多个内核函数以及用户空间与内核空间的数据交换。本文将对...

Global site tag (gtag.js) - Google Analytics