【发布时间】:2019-04-16 06:20:06
【问题描述】:
尝试在 Chrome 中自动播放视频时遇到错误,提示:DOMException: play() failed because the user didn't interact with the document first.
对于“普通”页面有一个解决方案:
var promise = document.querySelector('video').play();
if (promise !== undefined) {
promise.then(_ => {
// Autoplay started!
}).catch(error => {
// Autoplay was prevented.
// Show a "Play" button so that user can start playback.
});
}
但我使用 Phaser 框架 Video 对象播放视频,该对象不返回承诺,因此我需要确定用户是否与尝试播放视频的页面 before 进行了交互。有什么解决办法吗?
【问题讨论】:
-
你试过在页面加载时设置播放吗?
-
@andrea-f 页面可以加载到其他选项卡中,这样用户即使在加载时也不会与之交互
-
也许现在可以处理选项卡更改和调度事件?
-
@DmitrySamoylov 我认为它至少需要关注。除非您可以在页面上模拟会触发自动播放的用户操作,例如发送点击事件。
-
这肯定是因为您的视频有声音,由于新政策,Chrome 会阻止自动播放有声音的视频:developers.google.com/web/updates/2017/09/…
标签: javascript html5-video phaser-framework