如何防止“ play()请求被调用pause()中断”错误?

我创建了一个网站,如果用户单击该网站,它将播放声音。为了防止声音重叠,我必须添加代码:

n.pause();

n.currentTime = 0;

n.play();

但这会导致错误: The play() request was interrupted by a call to pause()

每次声音事件在另一个触发器之后立即触发时都会出现。声音仍然可以正常播放,但我想防止此错误消息不断弹出。有任何想法吗?

回答:

我最近也遇到了这个问题-

这可能是play()和之间的竞争条件pause()。。

正如@Patrick指出的那样,pause它不会返回诺言(或其他任何东西),因此上述解决方案将行不通。虽然MDN

pause()在的Media元素的WC3草案中没有上的文档,但它说:

media.pause()

将暂停的属性设置为true,必要时加载媒体资源。

因此,也可以paused在其超时回调中检查属性。

基于这个出色的SO答案,您可以通过以下方法检查视频是否正在播放(或未播放),因此可以安全地触发play()而不出错。

var isPlaying = video.currentTime > 0 && !video.paused && !video.ended 

&& video.readyState > 2;

if (!isPlaying) {

video.play();

}

以上是 如何防止“ play()请求被调用pause()中断”错误? 的全部内容, 来源链接: utcz.com/qa/421584.html

回到顶部