2010-12-06 27 views
6

如果IE正在忙於處理頁面加載,然後它一般表明漩渦圖標,而不是favicon.ico。但如何以下如何識別,如果IE耗盡它的每個域的連接數限制

  1. 連接限制區分均達到和IE尚未收到的所有內容
  2. IE收到它的所有請求的響應,但正在渲染頁面

將IE瀏覽器顯示忙碌的圖標,如果任何JavaScript操作未完成(主要是onload JavaScript調用?)

感謝和問候, 阿維納什

回答

0

也許唯一的辦法是看像Fiddler - 然後你就可以準確地跟蹤IE是幹什麼的,(歡樂時光)進行計數。

我想不出其他辦法,黯然。

+0

感謝danp。但是,如果JavaScript調用處於無限循環狀態,您是否認爲有任何編程方式可以獲取像JavaScript處理程序這樣的信息,以獲取有多少連接處於忙碌狀態,如果連接池耗盡? – avinash 2010-12-07 01:52:08

1

在問候「1.Connection達到極限和IE尚未收到的所有內容」這一限制在WinInet中強加的,我甚至沒有嘗試回答這個問題,因爲幾乎所有的方法,我能想到的,甚至處理問題(從頁面內部)涉及的方法將進一步減少頁面的加載時間。 DanP關於Fiddler的建議是一個很好的建議,你可以做的是爲Fiddler寫一個擴展或者一些自定義腳本,當任何給定的時間TWO請求相同的主機名時,它會記錄日誌,以便記錄日誌。否則,這是一個關注它的小提琴手的問題,只是看看是否同時處理兩個相同主機名的請求,但通常情況下請求會如此迅速地完成,試圖在小提琴手中獲得良好的感覺通過觀看UI可能會有問題。

在問候「2.IE收到它的所有請求的響應,但正在渲染頁面」這聽起來像你想知道什麼時候該頁面爲用戶準備與它進行交互。事實上IE不同步地執行這些任務,它在下載東西時呈現頁面,並且用戶可以在IE仍然忙於下載時與頁面交互。所以我所做的是在這裏包含一個例子,它展示瞭如何判斷Internet Explorer選項卡中的微調器圖標何時切換到圖標。當document.readyState ==「complete」時,微調器消失,但是頁面已準備好供用戶在document.readyState ==「interactive」上與它進行交互,這恰好也出現在document.body.readyState ==「完成「,我不知道是否document.body.readyState ==」complete「是document.readyState ==」interactive「的原因,但它們確實看起來是重合的。但是,如果您確實想要確定是否下載了所有內容,則DOM中的每個元素都有一個readyState屬性,您可以枚舉DOM以檢查每個元素是否具有readyState ==「complete」以確定每個元素是否已完成下載和渲染。

示例html可以保存到您的計算機並運行,但是如果從本地磁盤運行它,IE會提示您使用yello信息欄,並且您需要右鍵單擊以允許其運行腳本。當html運行正常時,你應該看到javascript警報,你會注意到在「document.readyState:interactive」的警報中,spinner仍然在旋轉,但是當提示「document.readyState:complete」時,你會注意到微調圖標已經消失。希望這可以幫助。

<html> 
<head> 
    <script language="javascript"> 
     document.onreadystatechange = function(e) 
     { 
      alert("Document State: " + 
          document.readyState + 
          "\nBody State: " + 
          document.body.readyState); 
     }; 
    </script> 
</head> 
<body> 
Test Content 
<div id="placeToAddTo"></div> 
<script language="javascript" type="text/javascript"> 
    for(var i = 0; i < 1000; i++) 
    { 
     var obj = document.createElement("div"); 
     obj.innerText = "Div Number: " + i + " Document State: " 
        + document.readyState + " Body State: " 
        + document.body.readyState; 
     document.getElementById("placeToAddTo").appendChild(obj); 
    } 
    alert("completed creating object"); 
</script> 
</body> 
</html>