2010-07-27 91 views
0

在下載html片段的AJAX請求後,xmlhttp.readyState在下載完成後轉至4。它看起來像readyState == 4對於瀏覽器在呈現下載內容方面的進度,什麼也不說(什麼都不應該說,imo)。如何確保在AJAX請求後呈現完成

因此,如果我的JS在開始使用下載的html之前僅依賴於readyState == 4,那麼當JS開始執行時,我很有可能會得到'whatever_var is undefined'。我不想那樣。

如何確定瀏覽器全部完成渲染?

我沒有使用jquery或任何其他框架。

顯示問題的測試案例:http://www.sellmycalls.com/cgi-bin/chain然後當出現短頁面時,請按下左側菜單欄中的任一綠色按鈕(標記爲「所有選項」和「監視列表」)。重複幾次,出現問題。如果看起來頁面已掛起,請關閉其選項卡並將其放入新選項卡中。

使用Firebug/FF查看頁面上的錯誤;我不會在任何其他瀏覽器中運行。

第一次加載此頁面時,您可能會看到一些介紹資料。使用左側菜單框中的「隱藏簡介」/「隱藏幫助」未上色按鈕來關閉簡介框。控制檯上的錯誤信息就像「cx_usrname is undefined」一樣。 (還有另一個錯誤,顯示在這個頁面上:「未處理的異常...」這是一個不同的問題,我並不擔心。)

+0

你能給我們一個展示問題的測試用例嗎?我不確定瀏覽器在執行JS之前是否需要渲染任何內容。更好的問題是如何將「下載的HTML」(一個文本字符串)轉換爲DOM。 – MvanGeest 2010-07-27 11:08:30

+0

請參閱上面的編輯。 – 2010-07-27 11:26:58

+0

是的,沒錯:「下載的HTML」是我知道描述它的唯一方法。我真正的意思是「當DOM知道渲染的頁面時」,但我不知道如何以這種方式提出問題。 – 2010-07-27 11:33:26

回答

1

設置一個函數,在所有密集的東西之後運行開始與網站的互動。 IE,在應用第一次運行時隱藏「開始」按鈕,然後在所有其他代碼運行後通過函數調用啓用它。

+0

感謝您的迴應,但我正在尋找一種方法來知道何時運行「所有其他代碼」。 – 2010-07-27 12:40:45