H5网页视频自动播放时提示play() failed异常解决
·
-
问题说明
最近客户让增加一个功能,有待办的消息时,需要播放声音进行提醒。
风格火火的就去干了,调试时候,发现用按钮触发播放事件能正常出声音,但是使用定时器去触发播放事件时就报错了如下:
Uncaught (in promise) NotAllowedError: play() failed because the user didn't interact with the document first
经过分析可能就是浏览器的安全性措施,只能用户触发播放才行。
-
解决办法
audio标签增加muted=true属性,该属性的作用的就是让视频不要自动播放
<audio id="WaitTaskPlayer" muted="true">
<source src="/audio/WaitTask.mp3" type="audio/mp3"/>
</audio>
然后,窗体自定义事件,增加鼠标点击把muted=false的操作
document.body.addEventListener('mousedown', () => {
var player = document.getElementById("WaitTaskPlayer");
player.muted = false;
},false);
最后就是你的正常播放视频事件的处理
function PlayTask() {
var player = document.getElementById("WaitTaskPlayer");
player.play();//播放
}
setInterval(PlayTask, 1000 * 60);
经过测试,你只要鼠标点击页面任何地方后,自动播放的功能就可以正常用了,有点取巧了,但是对应管理后台来说,操作人员进入主页后,肯定会操作鼠标的,所以也算凑合能用。
本人非专业前端,都是拼凑的代码,这个地方能正常的底层逻辑也讲不太明白。
更多推荐
所有评论(0)