【问题标题】:Javascript stops as I lock iphone, can it still run?Javascript 在我锁定 iphone 时停止,它还能运行吗?
【发布时间】:2011-08-13 01:38:10
【问题描述】:

有没有办法告诉 javascript 函数在手机被锁定时继续运行?

我几乎有一个计时器,即使手机处于空闲状态,我也需要继续运行。

【问题讨论】:

  • javascript 是在您自己的应用程序中(即在UIWebView 中),还是在手机上的浏览器中(Safari 或类似的)?
  • 这是一个网络应用,所以在浏览器中

标签: javascript iphone


【解决方案1】:

是的,你可以。您甚至可以在 Safari 处于后台时运行 JavaScript。

只需在您的网站上放置一个隐藏框架:

<iframe src="background.html" style="display:none;"></iframe>

背景.html:

<!DOCTYPE HTML>
<head>
<meta http-equiv="refresh" content="3" />
</head>
<body>
<script>
parent.run_function_from_core_page();
</script>
</body>
</html>

隐藏框中的页面每 3 秒刷新一次,并运行 JavaScript,即使手机处于锁定状态。

要小心,因为如果您不在 WiFi 上,它也会导致高数据流量!

【讨论】:

  • 我刚刚在运行 iOS 6.0.1 的 iPhone 4s 上对其进行了测试,它似乎运行良好。很棒的发现!
  • 这与在 iOS 7.02 (11A501) 的 iPhone 4S 上编写的一样。 :) @blabus,我建议你重试或发布你的代码。
  • 我在 iOS 7.12 上试过这个,发现刷新会在三分钟左右后停止..一旦手机被锁定..从而杀死应用程序..
  • @HarshaRama 是的,这不足以通过手机锁定/后台保持计时器。你必须为此而本土化。我也确实观察到此刷新任意停止。所以这个计时器会在很短的未定义时间内工作,并且总体上是不可靠的。
  • 截至今天(2017 年 4 月 4 日),接受的答案(关于 iFrames)似乎不再适用于 Android 6.0.1 上的 Chrome 55——iFrame 仅在父页面具有重点。在 Chrome 中切换标签足以停止执行。
【解决方案2】:

编辑:您可以使用&lt;iframe&gt; 技巧在后台运行定时javascript 代码。见Zsolt's response to this question

但是,当 iPhone 处于睡眠状态时,您无法使用 setTimeout() 继续运行 javascript。

当手机进入睡眠状态时,Safari 将使用setTimeout() 终止所有正在运行的 JavaScript 进程。查看this answer here 的某些原因。

【讨论】:

  • 好吧,所以说我必须为一个网络应用程序制作一个计时器,并且即使在手机被锁定时也需要它运行,你认为我应该怎么做?它可以用PHP完成吗?然后javascript可能只是显示它?
  • 当页面不是活动标签但 safari 仍然打开时,JavaScript 仍然运行。
  • Safari 不会使用 setTimeout() 杀死 javascript 进程,而是暂停设备唤醒时自动恢复的操作。
【解决方案3】:

不。当手机被锁定并进入睡眠状态时,您的代码将不会运行。这是设计使然; iOS 设备本质上是手机,而不是成熟的 PC,旨在在用户不使用它们时节省电量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2022-10-07
    • 1970-01-01
    相关资源
    最近更新 更多