2012-06-27 49 views
6

我有一個ASP.Net網頁,目前在iOS4上工作,但不在iOS5上。JavaScript setTimeout在Window.Open後沒有觸發

在父網頁上,我有一個打開子窗口的按鈕。我在打開的窗口調用之後在父窗口中執行setTimeout刷新事件。

我注意到iPhone的iOS5,當它打開子窗口時,直到我回到父窗口,然後回到子窗口才能看到更新,父頁面中的setTimeout函數纔會被調用。

這裏是我的代碼在父頁面中的片段,並在那裏我覺得是這個問題

WindowManager.OpenWindow('...') 
t = setTimeout(function() { handles[0].testfx(); }, 1000); 

本上運行iOS4的但不是在iOS5的。

任何想法?

+3

沒有關於如何刷新的細節,我不認爲任何人都可以提供幫助。 –

+2

也許ISO5會在頁面處於背景時停止javascript執行,以節省電池或類似的東西。 – Aristos

回答

3

當窗口不是活動窗口時,iOS5確實會暫停JavaScript。對此你無能爲力,所以你可以做的最好的嘗試是改變你的設置,這樣當你的窗口在後臺時不需要運行JavaScript。

你說你在做。你爲什麼做這個?坦率地說,這聽起來有點奇怪 - 當用戶甚至無法看到你的頁面時,你爲什麼要刷新任何東西? handles[0].testfx();這行是什麼對你有幫助的?

+1

在窗口不活動的情況下繼續處理JS可能有很多原因。在我的頭頂,人們可能會在短時間內保持與服務器的某種連接,這樣用戶在切換回頁面時並不總是需要重新建立連接或憑證。 –

+0

我認爲鉻是做類似的事情,將有助於調查這一點。 – Guillaume86

2

這只是一個建議,因爲我沒有權限測試這個,但是你可以通過使用window.postMessage來解決這個問題。一個這樣的例子可以找到here

對於您的情況,您可能需要檢查是否已經過了所需的時間,如果沒有,請再次致電window.postMessage,否則請致電您的處理程序。

我不確定如何處理呼叫window.postMessage的呼叫的速度(如果完全不在活動窗口中)。