2011-02-28 73 views
0

我可能失去了一些東西在這裏真的很明顯在更新......頁面元素並不明顯負載

我展示頁面加載過程中與進度條的對話框。對話框和進度條都是jQueryUI小部件。有幾個階段的加載 - 頁面加載jQuery $ .get()請求來加載資源,然後在$(document).ajaxStop()事件中,處理這些資源。在整個過程中,我正在更新進度欄和一些狀態文本。

問題是,只要ajaxStop事件觸發,更新就會停止。該代碼在資源加載期間很好地工作,但然後凍結,並且在處理期間沒有看到任何更新。如果我在Chrome中的post-ajaxStop更新中添加斷點並逐句通過代碼,則屏幕會正確更新,以便我知道代碼正常工作。

任何人都可以解釋爲什麼一切都在我的AJAX加載階段很好地更新,但然後停止在ajaxStop事件?事後有沒有簡單的方法讓更新繼續?

謝謝!

+0

你可能會發佈一個鏈接,以便它可以被複制嗎? – pimvdb 2011-02-28 11:53:36

+0

不幸的是我無法發佈鏈接。進一步的研究表明,這是因爲瀏覽器在Javascript實際執行時不會更新屏幕。我猜它可以在Ajax階段工作,因爲控件在請求完成時返回給瀏覽器。我需要一些方法在每次迭代時將控制權交還給瀏覽器 - 這可能是使用setTimeout或類似的方法,但是在我的代碼中很難實現... – 2011-02-28 12:23:18

回答

0

後來搜索的幾個小時內,following blog我指出了正確的方向:

有一個在它允許你定義兩個函數,一個計算和一個更新UI項描述的jQuery的擴展。它使用setTimeout函數交替調度它們。

我不得不重寫我的代碼,類似於延續傳遞樣式,以便每個函數使用setTimeout計劃其延續。這會將控件返回瀏覽器足夠長的時間,以便屏幕更新。

雖然爲了避免瀏覽器/ JavaScript的限制,但這感覺就像是一種黑客攻擊。任何人都知道更好的方法?