2011年1月4日 星期二

JS 加載完後,執行某段JS

只需在JS函數後加上

if(document.readyState=="complete"){
        openTheIndexPage();
    }



有一個比較完整的版本

  1. //Some scripts require that you run something immediately after the web page finishes loading.   
  2. var start;  
  3. window.onload = function () {  
  4.   if(document.all) {//简单判断是否是IE  
  5.     start = setInterval('init()', 200);  
  6.   } else {  
  7.       var element = document.getElementById("fade");  
  8.       element.style.display="none";  
  9.   }  
  10. };  
  11.   
  12. function init() {  
  13.  if (document.readyState == "complete") {  
  14.     try{  
  15.         var element = document.getElementById("fade");  
  16.         element.style.display="none";  
  17.         clearInterval(start);//执行成功,清除监听  
  18.     }catch(err){return true;}  
  19.  }  
  20. }  
  21. //注:document.readyState在firefox中不起效果,所以要用window.onload时间出发firefox,如果 window.onload 确定是在页面加载完成后执行,  
  22. 监控页面是否加载完成,就不需要   
  23. //这段代码了.   
  24.  if(document.all) {//简单判断是否是IE  
  25.     start = setInterval('init()', 200);  
  26.   }   

(以上來自http://zkh43javaeye.javaeye.com/blog/567665)


另外,如果是想整個頁面加載完再執行,或者網站很多頁都會用到,可以使用一個外部函數



<script>
    var ready = function(fun) {
        if (document.addEventListener) {
            document.addEventListener("DOMContentLoaded", fun, false);
        } else {
            var head = document.getElementsByTagName("head")[0];
            var script = document.createElement("script");
            script.src = "javascript:void(0)";
            script.defer = true;
            script.onreadystatechange = function(){
                if (this.readyState == "loaded" || this.readyState == "complete") {
                    fun.apply(this, arguments);
                    head.removeChild(this);
                }
            }
            head.appendChild(script);
        }
    }
</script>

調用的時候:
 ready(function() {
        alert("ok!");
    });


沒有留言:

張貼留言