【问题标题】:JavaScript setTimeout not firing after Window.OpenJavaScript setTimeout 在 Window.Open 后未触发
【发布时间】:2012-06-27 16:24:18
【问题描述】:

我有一个 ASP.Net 网页,目前可以在 iOS4 上运行,但不能在 iOS5 上运行。

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

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

这是我在父页面中的代码的 sn-p,我认为问题出在哪里

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

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

有什么想法吗?

【问题讨论】:

  • 没有关于如何刷新的详细信息,我认为没有人能提供帮助。
  • 当页面处于后台以节省电池或类似的东西时,ISO5 可能会停止 javascript 执行。

标签: c# asp.net ios5 ios4


【解决方案1】:

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

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

【讨论】:

  • 在窗口不活动的情况下继续处理JS的原因可能有很多。在我的脑海中,一个可能是在短时间内保持某种类型的服务器连接,这样用户在切换回页面时不必总是重新建立连接或凭据。
  • 我认为 chrome 正在做类似的事情,对调查这个很有用。
【解决方案2】:

这只是一个建议,因为我无权对此进行测试,但您可以使用 window.postMessage 来破解此问题。这方面的一个例子可以在here 找到。

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

如果不在活动窗口中,我不确定对window.postMessage 的调用会以多快的速度被处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2013-05-05
    • 2010-10-08
    相关资源
    最近更新 更多