Keep screen awake via Wake Lock API while stopwatch is running
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
e9995bb5d2
commit
4e1028e1a1
1 changed files with 15 additions and 3 deletions
|
|
@ -955,6 +955,18 @@ var sw = (function(){
|
|||
var swEl = document.getElementById('sw');
|
||||
var state = 0; // 0=stopped, 1=running, 2=paused
|
||||
var start = 0, elapsed = 0, raf = null;
|
||||
var wakeLock = null;
|
||||
|
||||
function acquireWakeLock(){
|
||||
if(!('wakeLock' in navigator)) return;
|
||||
navigator.wakeLock.request('screen').then(function(s){ wakeLock = s; }).catch(function(){});
|
||||
}
|
||||
function releaseWakeLock(){
|
||||
if(wakeLock){ wakeLock.release(); wakeLock = null; }
|
||||
}
|
||||
document.addEventListener('visibilitychange', function(){
|
||||
if(document.visibilityState === 'visible' && state === 1) acquireWakeLock();
|
||||
});
|
||||
|
||||
function getMs(){ return state === 1 ? elapsed + (Date.now() - start) : elapsed; }
|
||||
|
||||
|
|
@ -975,18 +987,18 @@ var sw = (function(){
|
|||
if(state === 0){
|
||||
start = Date.now(); elapsed = 0;
|
||||
swEl.classList.add('running');
|
||||
state = 1; tick();
|
||||
state = 1; tick(); acquireWakeLock();
|
||||
} else if(state === 1){
|
||||
cancelAnimationFrame(raf);
|
||||
elapsed += Date.now() - start;
|
||||
swEl.textContent = fmt(elapsed);
|
||||
swEl.classList.remove('running');
|
||||
state = 2; updateFillBtns();
|
||||
state = 2; updateFillBtns(); releaseWakeLock();
|
||||
} else {
|
||||
cancelAnimationFrame(raf);
|
||||
elapsed = 0; swEl.textContent = '0.00s';
|
||||
swEl.classList.remove('running');
|
||||
state = 0; updateFillBtns();
|
||||
state = 0; updateFillBtns(); releaseWakeLock();
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue