在Window.Open之后,JavaScript setTimeout没有触发

时间:2012-06-27 16:24:19

标签: c# asp.net ios5 ios4

我有一个ASP.Net网页,目前适用于iOS4但不适用于iOS5。

在父网页上,我有一个打开子窗口的按钮。我在打开窗口调用之后立即在父窗口中执行setTimeout刷新。

我在iPhone iOS5上注意到,当它打开子窗口时,父窗口中的setTimeout函数不会被调用,直到我回到父窗口然后回到子窗口才能看到更新。

这是我父代页面中代码的一小部分,我认为是问题所在

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

这可以在iOS4上运行,但不能在iOS5上运行。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

当窗口不是活动窗口时,iOS5确实会暂停JavaScript。关于此,您无能为力,因此您可以做的最好的方法是尝试更改您的设置,以便在窗口处于后台时不需要运行JavaScript。

你说你正在做setTimeout refresh thing in the parent window。你为什么做这个?坦率地说,这听起来有点奇怪 - 为什么当用户甚至看不到您的页面时,您想要刷新任何内容?第handles[0].testfx();行对你有什么作用?

答案 1 :(得分:2)

这只是一个建议,因为我没有权限对此进行测试,但您可以使用window.postMessage来解决此问题。可以找到here的示例。

在您的情况下,您可能想要检查是否已经过了所需的时间,如果没有,请再次致电window.postMessage,否则请致电您的处理程序。

我不确定在不在活动窗口中时,对window.postMessage的调用会有多快,如果有的话。