• 如何在页面加载完成后再去做某事?什么方法可以判断当前页面加载已完成?


    javascript提供了document.readyState=="complete"方法来解决当前页面加载判断的问题。
    
     <script type="text/javascript">
       function initView(){ 
      
          if (document.readyState=="complete") 
       { 
          //此处可以填充具体的处理方法 
          alert("The page is already Load!"); 
       } 
       } 
     </script> 
    <html> 
    <head></head> 
       <body onload="initView();"> 
         <!--具体内容省略-----> 
       </bodu> 
    </html> 
    
    ===================================================================================
    方法一:
    
        
    function waitThenDoIt(){
      try{
        if (window.document.readyState){//IE
          if (window.document.readyState==’complete’){
            doIt();
          }else
            setTimeout("waitThenDoIt()",10);
        } else {//Firefox
            window.addEventListener("load",function(){doIt();},false);
        } 
      } catch (ex) {
      }
    }
    function doIt(){
      //
    }
    
    将代码中的:
    window.addEventListener("load",function(){doIt();},false);
    替换为:
    window.addEventListener("DOMContentLoaded",function(){doIt();},false);
    也可以。
    
     
    
    方法二:
    
    做页面时经常会遇到当前页面加载完成后,执行某些初始化工作。这时候就要知道如何判断页面(包括IFRAME)已经加载完成,代码如下:
    
    <script language="javascript">
          document.onreadystatechange = statechange;
          function statechange() {
            if(document.readystate == 'complete') {
               for(i=0; i<window.frames[].length; i++) {
                  window.frames[i].document.onreadystatechange = statechange;
                  if(window.frames[i].document.readystate != 'complete') {
                     statechange();
                     return;
                  }
                }
             }
          }
        </script>
    
    此方法可以写在公用js中,其他方法调用判断即可
    
     
    
    方法三:
    
    window..onload的是页面加载完成后执行的事件,而且winodw.onload不能多次执行,jquery的$(fn)解决了这个问题,但是不使用jquery的情况下呢?以下是老外写的解决办法
    Js代码 复制代码
    
         
           
        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  
                     
                     
         
                    // 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);  
            }  
        })(); 
  • 相关阅读:
    datagrid行拖拽(参考网上的相关资料)
    给定treeData,根据关键字进行过滤:显示父级元素;如果节点被选中,那它的子节点也全部被选中
    复选框
    UVA 10025 The ? 1 ? 2 ? ... ? n = k problem
    UVA10161 Ant on a Chessboard
    UVA 113 Power of Cryptography
    UVA 10785 The Mad Numerologist
    UVA 755 487-3279
    UVA10194 FootBall aka Soccer
    UVA 123 Searching Quickly 开始新的路程
  • 原文地址:https://www.cnblogs.com/baocheng/p/5704572.html
Copyright © 2020-2023  润新知