在下載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」一樣。 (還有另一個錯誤,顯示在這個頁面上:「未處理的異常...」這是一個不同的問題,我並不擔心。)
你能給我們一個展示問題的測試用例嗎?我不確定瀏覽器在執行JS之前是否需要渲染任何內容。更好的問題是如何將「下載的HTML」(一個文本字符串)轉換爲DOM。 – MvanGeest 2010-07-27 11:08:30
請參閱上面的編輯。 – 2010-07-27 11:26:58
是的,沒錯:「下載的HTML」是我知道描述它的唯一方法。我真正的意思是「當DOM知道渲染的頁面時」,但我不知道如何以這種方式提出問題。 – 2010-07-27 11:33:26