chrome浏览器禁止自动播放语音解决方案

项目背景

今年11月份有遇到一个项目现场,需要自动播放告警语音,但版本升级后自动播放语音的功能就不生效。不生效的场景如下,打开浏览器第一次播放语音能正常播放,但按F5刷新页面后,告警再次推送上来播放就会失败,听不到任何声音.....

问题分析

初步排查是不是浏览器语音播报的权限没有开,打开了F12看了配置声音那块,发现声音装置是有打开的,后面才发现这个是Chrome浏览器的自动播放策略导致的,下面直接插入一个大概图片说明一下这个策略

更多详细的了解可以参考developer.chrome.com/blog/autopl...

大概的意思就告诉大家,为了用户的体验不支持自动播放,但支持静音播放和交互播放。重要的是交互播放,只要我们在页面上点击了就可以进行音频播放,那个交互我们要怎么实现才好了......

解决方案

回去尝试了几次,考虑到产品的友好交互,我和产品经理大概讨论了一下,准备在我们的系统又上角的小喇叭做旁边做一个红色的感叹号用来提醒用户,告诉他当前浏览器由于xxx原因音频播放权限失效,点击红色感叹号重新解锁播放权限。使用这种诱导性的点击,让页面产生交互行为,由此获取音频播放权限,从而达到继续播放音频的效果,根据这个思路我们就开始吧

首先我们要自备一段音频,然后查看相应的播放权限,代码如下:

根据这个函数我们获取到在用户刷新页面后音频播放就会失效,从而对应失效后就设置对于的红色感叹号效果,这只是我这里业务引导用户的操作,我们也可以用弹出框,或者各种tips小提示框也行,只要用户鼠标点击或者移动就可以重新初始化语音播放的API,非常方便。

总结

通过这个方案,我们确实解决了语音首次播放后刷新页面播放失效的问题,我尝试了很多解决方案,有注册一个点击事件、iframe等,但均不生效,也想着有没有一种方案可以用户不用操作,页面就可以自动恢复播放语音的功能,但目前还是不行,只能采用引导用户进行页面交互来解决这个问题,当然你们有好的方式不妨留言给我,让我参考一下

相关推荐
Dontla3 小时前
为什么React列表项需要key?(React key)(稳定的唯一标识key有助于React虚拟DOM优化重绘大型列表)
javascript·react.js·ecmascript
德育处主任Pro5 小时前
『React』Fragment的用法及简写形式
前端·javascript·react.js
CodeBlossom6 小时前
javaweb -html -CSS
前端·javascript·html
CodeCraft Studio6 小时前
【案例分享】如何借助JS UI组件库DHTMLX Suite构建高效物联网IIoT平台
javascript·物联网·ui
打小就很皮...6 小时前
HBuilder 发行Android(apk包)全流程指南
前端·javascript·微信小程序
dancing9998 小时前
cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能
前端·javascript·typescript·游戏程序
萌萌哒草头将军9 小时前
🚀🚀🚀Prisma 发布无 Rust 引擎预览版,安装和使用更轻量;支持任何 ORM 连接引擎;支持自动备份...
前端·javascript·vue.js
书语时9 小时前
ES6 Promise 状态机
前端·javascript·es6
拉不动的猪10 小时前
管理不同权限用户的左侧菜单展示以及权限按钮的启用 / 禁用之其中一种解决方案
前端·javascript·面试
西陵10 小时前
前端框架渲染DOM的的方式你知道多少?
前端·javascript·架构