2016-11-06 236 views
10

我正在實現一個javascript計時器,該計時器會在iframe中加載,並且該計時器也會以一定的時間間隔播放一些音頻文件,基本上它用於例行演習,因此說10秒鐘有第一個練習,然後第二個1分鐘,第二個1分鐘,等等。使用javascript阻止Safari進入睡眠狀態

隨着鍛鍊時間的完成和下一個鍛鍊時間的增加,我改變了特定練習的音頻等等。我想要的是防止瀏覽器在手機(android,iOS),筆記本電腦等各種模式下休眠,直到定時器運行時爲止。

我已經使用了2個ios解決方案我正在使用重新加載頁面和其他人是否是Android或筆記本電腦我正在嘗試視頻here

而我最終的代碼來檢查的事情是

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(); 
} 

的sleep.js從連桿作爲上述告知。現在一直在嘗試大約一週的時間。除了MAC上的Safari瀏覽器之外,此解決方案適用於所有瀏覽器。任何人都可以告訴我如何停止Safari瀏覽器不進入睡眠模式。

+2

你不能........你是在瀏覽器的擺佈。 –

+0

你的「最終代碼來檢查事情」有'AppleWebKit' regex註釋掉了,所以'ua.iOS'甚至不會在macOS上檢測到Safari。你至少證實你可以在macOS上檢測到Safari嗎? –

回答

6

過去,您已經能夠進行黑客攻擊,例如在網頁上添加音頻標籤或在隱藏的iframe中重新加載網址。但是這些工作都不適用於iOS 7.唯一可行的解​​決方案是創建一個使用UIWebView的應用程序。

以下是因爲如果你有興趣的其他信息:https://stackoverflow.com/a/7477438/1640090

+0

這就是問題所在,我已經看過那個鏈接。 –

+0

所以總體而言,這樣做是不可能的。所以如果其他人嘗試他們可以得到一些幫助。 –

2

我建議,如果你正在尋找設備級控制創建科爾多瓦的應用程序。我相信你希望在瀏覽器中完成的事情類型是Apple主動阻止的事情;可能是因爲電池壽命和/或設備安全性原因。

如果你走這條路線,你可以使用: https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin

希望它能幫助。

+0

如果你可以檢查我的問題,事情正在設備上工作,但不適用於mac safari。所以,如果你能幫上忙。 –

相關問題