zoukankan      html  css  js  c++  java
  • 当文档准备就绪时,调用函数

    /*
    *传递函数给whenReady(),当稳当解析完毕且操作准备就绪时
    *函数将作为文档对象的方法调用
    *DOMContentLoaded、readystaatechange或者load事件发生时触发注册函数
    *一旦文档准备就绪,所有函数都将被调用,任何传递给whenRead()的函数都将立即调用
    **
    */
    var whenReady=(function(){   //这个函数返回whenReady
    	var funcs=[];   //当获得事件时,要运行的函数
    	var ready =false; //当触发事件处理程序时,切换到true
    
    	//当文档准备就绪时,调用事件处理程序
    	function handler(e){
    
    		//如果已经运行过一次,只需要返回
    		if (ready) return;
    
    		//如果发生readystatechange事件
    		//但是其状态不是complete,那么文档尚未准备好
    		if (e.type === "readystatechange" && document.readyState !== "complete") return;
    
    
    		//运行所有注册函数
    		//注意每次都要计算funcs.length
    		//以防这些函数的调用可能会导致注册更多的函数
    		for (var i = 0; i < funcs.length; i++) {
    			funcs[i].call(document);
    		}
    
    		//现在设置ready标识为true,并移除所有函数
    		ready = true;
    		funcs = [];
    	}
    
    	//为接受到的任何事件注册处理程序
    	if (document.addEventListener) {
    		document.addEventListener("DOMContentLoad",handler,false);
    		document.addEventListener("readystatechange",handler,false)
    		document.addEventListener("load",handler,false)
    	}else if(document.attachEvent){
    		document.attachEvent("onreadystatechange",handler);
    		window.attachEvent("onload",handler);
    	}
    
    	//返回whenReady()函数
    	return function whenReady(f){
    		if(ready) f.call(document) ; //若准备完毕,只需要运行它
    		else funcs.push(f);
    	}
    }())
    

      

  • 相关阅读:
    hdu 4114 Disney's FastPass 状压dp
    lightoj 1381
    bzoj 2428: [HAOI2006]均分数据 随机化
    bzoj 3969: [WF2013]Low Power 二分
    套题:wf2013 (1/8)
    hdu 4119 Isabella's Message 模拟题
    hdu 4118 Holiday's Accommodation 树形dp
    UESTC 2015dp专题 N 导弹拦截 dp
    UESTC 2015dp专题 j 男神的约会 bfs
    UESTC 2015dp专题 H 邱老师选妹子 数位dp
  • 原文地址:https://www.cnblogs.com/makan/p/4764500.html
Copyright © 2011-2022 走看看