2011-08-13 10 views
11

¿Hay alguna manera de decirle a una función de JavaScript que continúe ejecutándose incluso cuando un teléfono está bloqueado?JavaScript se detiene al bloquear el iphone, ¿aún puede ejecutarse?

Más o menos tengo un contador de tiempo que necesito para seguir funcionando incluso cuando el teléfono está configurado en ralentí.

+0

¿Está el Javascript en su propia aplicación (es decir, en un 'UIWebView'), o en un navegador en el teléfono (Safari o similar)? – mopsled

+0

es una aplicación web, por lo que en un navegador –

Respuesta

19

Sí, puede hacerlo. Incluso puede ejecutar un JavaScript cuando el safari está en segundo plano.

Sólo hay que poner un marco oculto en su sitio:

<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> 

La página en el marco oculto se actualiza cada 3 segundos, y ejecutar el código JavaScript, incluso si el el teléfono está bloqueado

Tenga cuidado, ya que puede dar lugar al tráfico de datos de alta también si no está en WiFi!

+0

Acabo de probarlo en un iPhone 4s con iOS 6.0.1, y parece funcionar bien. Gran descubrimiento! –

+1

Parece que ya no funciona a partir de iOS 7. – blabus

+0

Esto funciona como está escrito en iPhone 4S con iOS 7.02 (11A501). :) @blabus, te sugiero que vuelvas a intentar o publiques tu código. –

3

No. Cuando el teléfono está bloqueado y se queda dormido, su código no se ejecutará. Esto es por diseño; Los dispositivos iOS son esencialmente teléfonos celulares, no computadoras completas, y están diseñados para ahorrar energía cuando el usuario no los está utilizando.

12

EDIT: Puede ejecutar código javascript temporizado en segundo plano utilizando el truco . Ver Zsolt's response to this question.

No se puede seguir circulando Javascript mientras que el iPhone está durmiendo usando setTimeout(), sin embargo.

Cuando el teléfono se pone a dormir, Safari matará cualquier ejecutar JavaScript procesos utilizando setTimeout(). Consulte this answer here por algunos motivos por los que esto se hace.

+1

está bien, así que decir que tengo que hacer un temporizador para una aplicación web y necesito que se ejecute incluso cuando el teléfono está bloqueado, ¿cómo debo hacer esto, ¿crees? ¿Podría hacerse en PHP? y luego el javascript podría simplemente mostrarlo tal vez? –

+0

JavaScript todavía se ejecuta cuando la página no es la pestaña activa, pero Safari aún está abierto. –

+0

@Jonathan Solucionado mi respuesta – mopsled

Cuestiones relacionadas