2012-06-27 5 views
6

現在、iOS4では動作しますが、iOS5では動作しないASP.Net Webページがあります。JavaScript setTimeoutがWindow.Openの後に起動しない

親Webページには、子ウィンドウを開くボタンがあります。私は開いたウィンドウの呼び出しの直後に親ウィンドウでsetTimeoutの更新を行います。

iPhoneのiOS5では、子ウィンドウを開くときに、親ウィンドウに戻り、子ウィンドウに戻って更新を表示するまで親ページのsetTimeout関数が呼び出されないことに気付きました。

は、ここで親ページの私のコードのスニペットだと私は、これはiOS4を上ではなく、iOS5を上で動作する問題

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

だと思うところ。

アイデア?

+3

あなたがリフレッシュする方法についての詳細はありませんが、誰も手伝ってくれないと思います。 –

+2

おそらく、ISO5は、ページがバックグラウンドで電池を節約するか、それと似たようなものであれば、JavaScriptの実行を停止します。 – Aristos

答えて

3

ウィンドウがアクティブなウィンドウでない場合、iOS5は実際にJavaScriptを一時停止します。これについて何もすることはできませんので、できることはウィンドウがバックグラウンドにあるときにJavaScriptを実行する必要がないように設定を変更することです。

あなたはsetTimeout refresh thing in the parent windowと言っています。なぜあなたはこれをやっている?率直に言えば、ちょっと奇妙に聞こえる - ユーザーがあなたのページを見ることさえできないときに何が爽やかになりたいのですか?あなたのためにhandles[0].testfx();という行は正確に何をしていますか?

+1

ウィンドウがアクティブでない間にJSを処理し続ける理由はたくさんあります。私の頭の上から離れて、サーバーにある種の接続を短期間生き続けることができるかもしれないので、ユーザーがページに戻ったときに接続や資格情報をいつでも再確立する必要はありません。 –

+0

私はクロムがこれと似たようなことをしていると思うので、これを調べると便利です。 – Guillaume86

2

私はこれをテストするためのアクセス権がないので、これは単なる提案ですが、window.postMessageを使用してこれをハックすることができます。この例はhereです。

場合によっては、必要な時間が経過したかどうかを確認し、そうでない場合はwindow.postMessageに再度コールしてください。それ以外の場合は、ハンドラを呼び出してください。

window.postMessageへの呼び出しがアクティブなウィンドウにない場合は、処理されるかどうかはわかりません。

関連する問題