我想启用唤醒锁 API。它可以在 Windows 平台和 Android 设备上正常运行,但不能在 Safari 或 iOS 设备上运行。
Safari 浏览器中控制台出现错误
NotAllowed, Permission was denied
。
我尝试使用下面的代码
if ('wakeLock' in navigator && 'request' in navigator.wakeLock) {
let wakeLock = null;
const requestWakeLock = async () => {
try {
wakeLock = await navigator.wakeLock.request('screen');
wakeLock.addEventListener('release', (e) => {
console.log(e);
console.log('Wake Lock was released');
});
console.log('Wake Lock is active');
} catch (e) {
console.error(`${e.name}, ${e.message}`);
}
};
requestWakeLock();
const handleVisibilityChange = () => {
if (wakeLock !== null && document.visibilityState === 'visible') {
requestWakeLock();
}
};
document.addEventListener('visibilitychange', handleVisibilityChange);
}
解决方法是创建一个临时按钮,绑定
navigator.wakeLock.request
单击事件并调用 button.click()
。
好像iOS(17.5.1)有这个问题,我发现了一个与这个问题相关的问题(https://bugs.webkit.org/show_bug.cgi?id=254545)。