关于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[i]();
    domReadyController.index++;
    exec(domReadyController.index);
    }else{
    domReadyController.index=0;
    domReadyController.stack=[];
    }
   }
}(),
addEvent:function(func){
this.stack.push(func);
}
}


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

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

你可能感兴趣的:(web前端,javascript)