2011-08-13 85 views
11

即使手机被锁定,是否有办法让javascript函数继续运行?Javascript停止,因为我锁定iPhone,它仍然可以运行?

非常多我有一个计时器,我需要继续运行,即使手机设置为闲置。

+0

在您自己的应用程序中(即在“UIWebView”中)还是在手机上的浏览器(Safari或类似的)中使用JavaScript? – mopsled

+0

这是一个网络应用程序,所以在浏览器 –

回答

19

是的,你可以。当Safari浏览器处于后台时,您甚至可以运行JavaScript。

只要把一个隐藏帧在您的网站:

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

background.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上!

+0

我刚刚在运行iOS 6.0.1的iPhone 4s上测试了它,它似乎工作正常。伟大的发现! –

+1

这似乎不再起作用从iOS 7。 – blabus

+0

这适用于iPhone 4S与iOS 7.02(11A501)写的。 :) @blabus,我建议你重试或发布你的代码。 –

3

没有。当手机被锁定并进入睡眠状态时,您的代码将无法运行。这是设计的; iOS设备本质上是手机,而不是成熟的个人电脑,并且设计用于在用户不使用它们时节省电量。

12

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

但是,当iPhone正在使用setTimeout()进行睡眠时,您无法继续运行JavaScript。

当手机进入睡眠状态时,Safari将使用setTimeout()杀死所有正在运行的javascript进程。检查出this answer here由于某些原因为什么这样做。

+1

好吧,这么说,我必须做一个Web应用程序的计时器,并需要它运行,即使手机被锁定,我应该怎么做这个你觉得呢? 它可以在PHP中完成?然后JavaScript可能只是显示它呢? –

+0

当页面不是活动选项卡时Safari仍然运行,但safari仍处于打开状态。 –

+0

@Jonathan修复了我的答案 – mopsled

相关问题