有没有JavaScript API可以检测iOS 11 Safari的低功耗模式? 目前我还没有找到相应的信息。
有没有JavaScript API可以检测iOS 11 Safari的低功耗模式? 目前我还没有找到相应的信息。
const videoElement = document.getElementById('ID_of_video');
videoElement.addEventListener('suspend', () => {
// suspend invoked
// show play button
// iphone is in low power mode
});
videoElement.addEventListener('play', () => {
// video is played
// remove play button UI
// iphone is not in low power mode
});
您还可以在此处阅读说明:在低电量模式下播放视频
.catch((error) => {
if (error.name === "NotAllowedError") {
//low power mode
}
我也曾在同样的概念上苦苦挣扎,但这个有用的链接帮了我很多: https://video-dev.github.io/can-autoplay/
结果:视频静音 (Error "NotAllowedError": 请求在当前环境下被用户代理或平台禁止,可能是因为用户拒绝了权限。
现在我使用一个promise检查视频是否正在播放,如果是,那就太好了。否则,我会捕获NotAllowedError,似乎每次都能正常运行。
iOS上的Safari不支持访问低电量模式设置状态(甚至不支持访问电池电量)。
setInterval
的实际间隔来检测“低功耗模式”(或称为省电模式),因为在低功耗模式下会发生累积延迟效应。requestAnimationFrame
的帧率来检测“节能模式”(或称为省电模式)。<iframe>
中可能无法正常工作)<iframe>
中无法按预期工作,因此请在顶级窗口中运行它。在power-saving.js
中定义了一个阈值常量1.3
,可能不适用于除iPhone 8之外的设备。 - fuweichin1.3
这个常量也与手机型号有很大关联。例如,在 iPhone 6 上,我需要一个 2.5
。 - Marco Martinelliautoplay loop muted
属性的隐藏视频,然后在视频被挂载时监听播放事件,如下所示:testVideo
.play()
.then(() => {})
.catch((error) => {
//Do something like adding controls to allow user to manually play
});
});
playsinline
属性,对我来说它有效。 - gang