猿问

在 JavaScript 异步函数中,用户手势后 iOS 不播放 html5 视频

我想在异步函数中播放 HTML5 视频,作为click事件的处理程序,但 iOS 返回一个NotAllowedError - The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.. 所有其他浏览器和操作系统都可以无误地播放视频。


该视频在页面上可见,并在直接输入 URL 时起作用。该playsinline选项已添加。我不想将视频静音。iOS环境是iOS 12上的Safari,在Safari iOS 11上也可以重现该问题。


这是我的 JavaScript 代码:


async function StartButton_Click() {

    await doSomething();

    document.querySelector("#myvideo").play();

}

document.getElementById("startbutton").onclick = StartButton_Click;

await包含该声明是因为我想doSomething()在视频开始之前完成。


#myvideo并且#startbutton都在 HTML 中定义。具体#myvideo如下:


<video id="myvideo" preload="auto" src="video.mp4" playsinline></video>

我希望视频在#startbutton被点击时播放,因为 iOS 政策规定视频可以在用户手势上播放。但是,控制台中会显示上述错误。即使处理程序是一个async函数,视频仍应播放,因为它仍然是用户手势的直接结果。


我应该如何修改此代码以使其在 iOS Safari 上播放?


蝴蝶不菲
浏览 659回答 2
2回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答