当我锁定iPhone时Javascript停止,它仍然可以运行吗?

Ben*_*ter 14 javascript iphone

有没有办法告诉javascript函数即使手机被锁定也能继续运行?

几乎我有一个计时器,我需要继续运行,即使手机设置为空闲.

小智 19

是的你可以.当safari在后台时,您甚至可以运行JavaScript.

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

<iframe src="background.html" style="display:none;"></iframe>
Run Code Online (Sandbox Code Playgroud)

background.html:

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

隐藏帧中的页面每3秒刷新一次,即使手机被锁定,也会运行JavaScript.

请注意,如果您不在WiFi上,它也会导致高数据流量!

  • 截至今天(2017 年 4 月 4 日),已接受的答案(关于 iFrame)似乎不再适用于 Android 6.0.1 上的 Chrome 55——iFrame 仅在父页面获得焦点时执行 JavaScript。在 Chrome 中切换标签足以停止执行。 (2认同)

mop*_*led 13

编辑:您可以使用<iframe>技巧在后台运行定时的JavaScript代码.请参阅Zsolt对此问题的回答.

setTimeout()但是,当iPhone处于休眠状态时,您无法继续运行javascript .

当手机进入睡眠状态时,Safari将使用以下任何正在运行的javascript进程终止setTimeout().请查看此答案,了解为什么要这样做.