Html保持屏幕唤起常亮状态,阻止息屏 作者: ciniao 时间: 2014-11-18 分类: 技术 评论 网页保持屏幕唤起常亮状态,阻止息屏,一行代码搞定 window.navigator.wakeLock.request("screen"); 因为保持屏幕唤醒是一个占用资源开销的行为,所以浏览器中,当页面最小化或者切换到非当前页的标签页的时候,屏幕的wake锁定就会释放,用户再切换回当前页面的时候,就没有锁定屏幕了,因此如果切换回来后还想保持屏幕唤起状态,就需要其他代码处理唤醒 document.addEventListener("visibilitychange", () => { if (document.visibilityState === "visible") { window.navigator.wakeLock.request("screen"); } }); 知道怎么开启唤醒操作,如果用户想关闭唤醒锁定,所以也得知道怎么主动关闭唤醒锁定 WakeLockSentinel 对象可以主动关闭,该对象是navigator.wakeLock.request(‘screen’)这个Promise执行后的返回值 1.使用then()获取 let wakeLock = null; window.navigator.wakeLock.request("screen").then((result)=>{ wakeLock = result; }); 2.使用async/await语法获取 let wakeLock = null; (async () => { wakeLock = await window.navigator.wakeLock.request("screen"); })(); 获取对象后,执行对象上release()方法,可以释放息屏锁定 wakeLock.release().then(() => { wakeLock = null; }); 可以监听wakeLock对象上的release事件,来确定是什么时候释放唤醒锁定的 wakeLock.addEventListener("release", () => { console.log("唤醒锁定已释放"); }); 汇总代码 ``` let wakeLock = null; function setWakeLock(){ window.navigator.wakeLock.request("screen").then((result)=>{ wakeLock = result; console.log("屏幕常亮"); }); } function unsetWakeLock(){ wakeLock.release().then(()=>{ wakeLock = null; console.log("取消屏幕常亮"); }) } document.addEventListener("visibilitychange", () => { if (document.visibilityState === "visible") { setWakeLock(); }else{ unsetWakeLock(); } }); setWakeLock(); ``` 注意,这个API仅能在https的网站上支持,且对浏览器有要求,详见: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/wakeLock#browser_compatibility