当前位置: 代码网 > it编程>编程语言>Javascript > JS如何获取浏览器声音、麦克风以及通知权限

JS如何获取浏览器声音、麦克风以及通知权限

2024年05月18日 Javascript 我要评论
今天遇到一个需求,后端socket推送警告消息,浏览器提示消息弹框和声音。但是初次打开页面发小声音播放失败,控制台报错:错误内容:play() failed because the user didn

今天遇到一个需求,后端socket推送警告消息,浏览器提示消息弹框和声音。但是初次打开页面发小声音播放失败,控制台报错:

错误内容:play() failed because the user didn't interact with the document first.

意思就是,用户没有在当前页面进行任何操作。

方案一:手动打开浏览器声音权限,在浏览器地址栏输入下面链接打开浏览器设置

(经过测试这个链接地址没有办法通过a标签和js打开)

google浏览器:chrome://settings/content/sound

firefox浏览器:about:preferences#privacy

edge浏览器:edge://settings/content/mediaautoplay

方案二:声音播放失败提示用户手动授权,只要用户跟当前页面存在交互,浏览器就不会存在这个错误。

// 加载声音
const sound = new audio(`video.mp3`)
// 播放声音
sound.play()
.then((res) => {
    console.log('视频播放成功')
})
.catch((error) => {
    // if (error.message.indexof('didn't interact') !== -1) 判断报错内容
    // 如果视频播放失败在这里弹出提示框
    alert('由于您的浏览器设置,报警声音无法自动播放,请点击确认按钮授权播放。')
})

这里说下目前没有发现获取声音权限和设置声音权限的api

上面是解决办法,下面讲一下浏览器获取麦克风、通知,视频权限

1、可以通过navigator.permissions.query api 查询浏览器权限是否开启。

// 查询麦克风权限
navigator.permissions.query({ name: 'microphone' })
.then((res) => {
    if (res.state === 'granted') {
       // 已授权
    }
})

// 查询相机权限
navigator.permissions.query({ name: 'camera' })
.then((res) => {
    if (res.state === 'denied') {
       // 拒绝授权
    }
})

返回的结果:{name: "", onchange: "", state: ""}

下面权限列表,都经过测试。

microphone           麦克风权限

camera                  相机权限

geolocation            地理位置信息

notifications。        网站显示桌面通知权限

....等权限

 2、可以通过navigator api 设置浏览器允许权限。

// 设置麦克风权限
navigator.mediadevices.getusermedia({ audio: true })
.then((res) => {
    // 允许麦克风权限
})
.catch((error) => {
    // 拒绝麦克风权限
})

navigator.geolocation.getcurrentposition(
() => {
    // 允许地理位置权限
},
() => {
    // 拒绝地理位置权限
})

下面设置权限,都经过测试。

navigator.mediadevices.getusermedia({ audio: true }).then()      麦克风权限

navigator.mediadevices.getusermedia({ video: true }).then()      摄像头权限

navigator.geolocation.getcurrentposition(callback)                     地理位置权限

notification.requestpermission().then()                                        通知权限

.....等设置权限

 经过在google、firefox、safari、edge浏览器上测试,发现只有google浏览器全部支持,其他浏览器只部分支持。

总结

到此这篇关于js如何获取浏览器声音、麦克风以及通知权限的文章就介绍到这了,更多相关js获取浏览器权限内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com