2012-03-18 45 views
1

我知道這聽起來有點違反直覺,的javascript:如何不斷加載頁

,但我在尋找一種方式來有一個網頁加載持續。有了這個,我的意思是我想要鉻上的圖標,例如,保持藍色的動畫gif。

有什麼建議嗎?

+2

爲什麼你需要這個?你想更具體地實現什麼? – 2012-03-18 22:19:57

+0

你的意思是假裝加載? – Kaf 2012-03-18 22:21:19

+0

@卡夫是的,我確切地想要這個! – lorussian 2012-03-18 22:21:54

回答

2

我會做這樣的事情:

<iframe style="display:none;" id="iframe1" src="loader.php" ></iframe> 
<iframe style="display:none;" id="iframe2" src="" ></iframe> 

製作一個名爲loader.php的.php文件,只需輸入如下內容:

<? sleep(6); ?> 

然後在你的主頁,使用此:

// DONT FORGET TO INCLUDE JQUERY SOMEWHERE IN YOUR HEADER 
<script type="text/javascript"> 
    var activeIframe = 2; 
    var timer = 1; 
    function startLoader(){ 
     if(activeIframe == 1){ 
      activeIframe = 2; 
      $('#iframe1').attr('src', 'loader.php?timer='+timer); 
      timer++; 
     }else{ 
      $('#iframe2').attr('src', 'loader.php?timer='+timer); 
      activeIframe = 1; 
      timer++; 
     } 
    } 

    $(document).ready(function() { 
     setInterval("startLoader()",4000); 
    }); 
</script> 

這個文件是在第一個iframe中加載。它將在6秒後完成,但在此之前您將更改第二個iFrame的內容:4秒後調用同一文件。重複這個過程。使用兩個iframe和6秒睡眠的原因是爲了確保iframe能夠加載(因爲每個div將每8(4 + 4)秒重新加載一次),否則瀏覽器可能會崩潰。通過使用兩個iframe,一個會一直加載,另一個允許完成。 loader.php?timer=<number>用於阻止瀏覽器緩存頁面(儘管我認爲它不應該能夠做到這一點,因爲PHP sleep()函數總是減慢加載速度,但只是爲了安全)

1

你可以注入的iframe,並使用document.open()

var f = document.createElement('iframe'); 
f.style.display = 'none'; 
document.body.appendChild(f); 
f.contentWindow.document.open(); 
console.log(f.contentWindow.document.readyState); // "loading" 

要停止加載,調用f.contentWindow.document.close();

以前在Firefox 10中工作得很好。在Chrome中,這是行不通的。欺騙瀏覽器時,可以使用下列:

var f = document.createElement('iframe'); 
f.onload = function(){ 
    if (f.parentNode) setTimeout(function() { 
     f.contentWindow.location.reload(); 
    },40); 
}; 
f.src = 'about:blank'; 
f.style.display = 'none'; 
document.body.appendChild(f); 

要停止在這種情況下,紡紗,從文檔中刪除:

f.parentNode.removeChild(f); 
+0

親愛的羅布,謝謝。不幸的是,雖然第一個在Firefox中完美工作...第二個在Chrome上造成醜陋的效果:你沒有看到圓圈旋轉,但它更像是一個快速刷新。 – lorussian 2012-03-20 21:07:37

+0

@silviolor什麼是你的代碼的應用程序?始終有效的解決方案是在iframe中加載頁面。此頁面會延遲響應。 – 2012-03-20 21:27:02