2016-11-06 3 views
10

Ich implementiere ein Javascript-Timer der Timer lädt in einem iframe und dieser Timer spielt auch einige Audiodateien in bestimmten Abständen, im Grunde ist es für Routineübungen so sagen für 10 Sekunden gibt es erste Übung und dann für eine Minute die zweite und für 2 Minuten die dritte und so weiter.verhindern Safari aus dem Schlaf mit Javascript

Wenn die Zeit für eine Übung beendet ist und die nächste auftaucht, ändere ich den Ton für diese bestimmte Übung und so weiter. Was ich will, ist zu verhindern, dass der Browser in jedem Modus, der Telefon ist (Android, iOS), Laptop überall bis zum Zeitpunkt des Timers läuft.

Ich habe 2 Lösungen für iOS verwendet, die ich benutze, um die Seite neu zu laden und für die anderen, ob es Android oder Laptop ist Ich versuche ein Video wie angegeben here.

Und mein letzter Code Dinge zu überprüfen ist

var ua = { 
    Android: /Android/ig.test(navigator.userAgent), 
    // iOS: /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent) 
    iOS:/iPhone|iPad|iPod/i.test(navigator.userAgent) 
}; 

<script type="text/javascript" src="js/sleep.js"></script> 

if (ua.iOS) { 
    preventIosSleep = setInterval(function(){ 
    window.top.location.href = '/'; 
    setTimeout(function(){ 
     try { 
     window.top.stop(); 
     } catch (exception) { 
     document.execCommand('Stop'); 
     } 
    }, 0); 
    }, 10000); 
} else { 
    sleep.prevent(); 
} 

// and when releasing the things 
if (ua.iOS) { 
    clearInterval(preventIosSleep); 
} else { 
    sleep.allow(); 
} 

Die sleep.js aus dem obigen Link wie gesagt genommen wird. Habe seit ungefähr einer Woche Sachen probiert. Diese Lösung funktioniert auf allen Browsern mit Ausnahme der Safari auf MAC. Kann mir jemand sagen, wie ich den Safari-Browser anhalten kann, um nicht in den Schlafmodus zu wechseln.

+2

können Sie nicht ........ Sie sind auf die Gnade des Browsers. –

+0

Ihr "endgültiger Code zum Überprüfen der Dinge" hat den 'AppleWebKit'-Regex auskommentiert, so dass' ua.iOS' Safari auf macOS nicht einmal erkennen wird. Haben Sie zumindest bestätigt, dass Sie Safari auf macOS erkennen können? –

Antwort

6

In der Vergangenheit konnten Sie Hacks ausführen, z. B. ein Audio-Tag auf der Seite oder eine URL in einem versteckten Iframe neu laden. Aber keiner von diesen funktioniert wie von iOS 7. Die einzige praktikable Lösung ist, eine App zu erstellen, die das UIWebView verwendet.

Im Folgenden finden Sie die für weitere Informationen, wenn Sie Interesse: https://stackoverflow.com/a/7477438/1640090

+0

Das ist die Frage, ich habe diesen Link schon angeschaut. –

+0

Also insgesamt lassen Sie es enden, als wäre das nicht möglich. Wenn also jemand anderes versucht, Hilfe zu bekommen. –

2

ich eine cordova App zu schaffen würde empfehlen, wenn Sie für Geräteebene Kontrolle suchen. Ich glaube, die Art von Dingen, die Sie in einem Browser erreichen möchten, wird von Apple aktiv verhindert. wahrscheinlich aus Gründen der Akkulaufzeit und/oder Gerätesicherheit.

Wenn Sie diesen Weg gehen, könnten Sie verwenden: https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin

Hoffe, es hilft.

+0

Wenn Sie meine Frage überprüfen können, funktionieren die Dinge auf Geräten, aber nicht auf Mac Safari. Also, wenn du damit helfen kannst. –

Verwandte Themen