Est-il possible, en JavaScript, de détecter lorsque l'écran est éteint dans l'Android & iOS navigateurs
J'ai été suivi quelques ridiculement élevé de temps de chargement que mon application javascript signalé, et a constaté que Android (et iOS) pause certains d'exécution de JavaScript, lorsque la fenêtre est en arrière-plan ou l'écran est éteint.
Sur Android, j'ai trouvé que je pouvais utiliser le window.onfocus
et onblur
événements pour détecter le moment où l'application a été de passer à l'arrière-plan (et js exécution allait bientôt être mis en pause, au moins pour les nouveaux scripts), mais je ne peux pas trouver un moyen de détecter lorsque l'écran est allumé ou éteint. Est-ce possible?
(Sur Safari, j'ai eu des résultats similaires, sauf que onfocus
et onblur
n'ai pas de feu de manière fiable.)
- Ne tournant l'écran et s'éteint pas le feu de la
onblur
etonfocus
événements, étant donné qu'Android va généralement à une sorte d'écran de verrouillage? Je pense que le tournant sur la puissance de feuonblur
, et à tout le moins le réveiller aurait le feuonblur
(si l'éteindre ne fonctionne pas) parce que Android est l'écran de verrouillage, puis après avoir passé l'écran de verrouillage,onfocus
aurait le feu, puisque vous êtes la transition à partir de l'écran de verrouillage à l'actif de l'app. Je ne suis pas un expert Android, mais pensé que je jetterais cette pensée si vous n'aviez pas coché. - Eh bien, le mien n'avait pas quand je l'ai testé, mais maintenant que tu en parles, j'avais désactivé l'écran de verrouillage. Elle retourne à la dernière application, j'avais ouvert dès que j'ai touché le bouton d'alimentation. L'activation de l'écran de verrouillage causé focus et blur événements pour être déclenché. Merci!
Vous devez vous connecter pour publier un commentaire.
Il y a peu d'options pour le vérifier:
À l'aide de La visibilité de l'API
À l'aide de
focus
etblur
événements pour détecter le navigateur onglet visibilité:Je viens de trouver une très bonne solution pour mon cas d'utilisation:
Lorsque l'écran est éteint (ou JS est interrompue pour une raison quelconque), l'intervalle suivant est retardée jusqu'à ce que JS exécution reprend. Dans mon code, je peux juste régler les minuteries par le
offBy
montant et de l'appeler bon.Dans le test rapide, cela semblait fonctionner très bien sur Android 4.2.2 du navigateur et Safari sur iOS 6.1.3.
Trouvé une belle fonction ici:
http://rakaz.nl/2009/09/iphone-webapps-101-detecting-essential-information-about-your-iphone.html
Inscrire pour l'événement:
Ceci est cohérent avec Cordova qui déclenche également l'
resume
événement.qu'allez-vous faire dans votre script une fois que vous maintenant que l'écran s'éteint? Enfin de toute façon, vous pouvez injecter des objets Java ( http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String) ) à l'interface avec l'activité de proxy et de toutes les informations dont vous avez besoin dans le monde.