关于domReady事件的一点看法,domReady队列

我不太清楚如果 DOMContentLoaded这一类的事件添加太多对性能有没有什么影响,但是我的想法是 将所有需要再domReady之后自动执行的方法加在一个监听里面 

这样做的好处是可以节约很多代码减少冗余,至于性能  没有测试过不敢说有什么提升   只能说凭感觉比添加多个要好

//domready综合控制器   避免添加过多事件
var domReadyController={
index:0,
stack:[],
init:function(){
//监听ready事件
    if(document.addEventListener) {
       document.addEventListener('DOMContentLoaded', function() {
           //注销事件, 避免反复触发
           document.removeEventListener('DOMContentLoaded',arguments.callee, false);
           exec(domReadyController.index);
       }, false);
   }else if(document.attachEvent) {        //IE
       document.attachEvent('onreadystatechange', function() {
           if(document.readyState == 'complete') {
               document.detachEvent('onreadystatechange', arguments.callee);
               exec(domReadyController.index);
           }
       });
   }
   function exec(i){
    if(i<domReadyController.stack.length){
    domReadyController.stack[i]();
    domReadyController.index++;
    exec(domReadyController.index);
    }else{
    domReadyController.index=0;
    domReadyController.stack=[];
    }
   }
}(),
addEvent:function(func){
this.stack.push(func);
}
}


以上就是代码    自只需要在自动执行的代码里面使用domReadyController.addEvent(function(){}); 

将要执行的东西写成function传过去就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值