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

 更新时间:2024年03月25日 11:44:02   作者:养老的null  
在我们开发网页的时候偶尔会有需要用户录音的情况,下面这篇文章主要给大家介绍了关于JS如何获取浏览器声音、麦克风以及通知权限的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

今天遇到一个需求,后端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获取浏览器权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解如何编写一个Typescript的类型声明文件

    详解如何编写一个Typescript的类型声明文件

    我们知道TypeScript根据类型声明进行类型检查,但有些情况可能没有类型声明,这个时候就需要我们自己写一个,下面小编就来和大家聊聊如果写一个Typescript的类型声明文件呢
    2023-06-06
  • js实现简单拼图小游戏

    js实现简单拼图小游戏

    这篇文章主要为大家详细介绍了js实现简单拼图小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • JavaScript事件委托技术实例分析

    JavaScript事件委托技术实例分析

    这篇文章主要介绍了JavaScript事件委托技术,实例分析了事件委托技术的原理、适用场合及用法实例,需要的朋友可以参考下
    2015-02-02
  • 深入解析JavaScript中函数的Currying柯里化

    深入解析JavaScript中函数的Currying柯里化

    这篇文章主要介绍了JavaScript中函数的Currying柯里化,Currying 的重要意义在于可以把函数完全变成"接受一个参数、返回一个值"的固定形式,需要的朋友可以参考下
    2016-03-03
  • 基于JavaScript实现跳转提示页面

    基于JavaScript实现跳转提示页面

    这篇文章主要介绍了基于JavaScript实现跳转提示页面 的相关资料,需要的朋友可以参考下
    2016-09-09
  • JavaScript Canvas编写炫彩的网页时钟

    JavaScript Canvas编写炫彩的网页时钟

    这篇文章主要为大家详细介绍了JavaScript Canvas编写炫彩的网页时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 微信小程序中视频的显示与隐藏功能

    微信小程序中视频的显示与隐藏功能

    这篇文章主要介绍了微信小程序中视频的显示与隐藏,思路大概是定义一个标记变量,控制视频的播放与暂停,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • 跟我学习javascript的隐式强制转换

    跟我学习javascript的隐式强制转换

    跟我学习javascript的隐式强制转换,感兴趣的小伙伴们可以学习一下
    2015-11-11
  • javascript中返回顶部按钮的实现

    javascript中返回顶部按钮的实现

    这篇文章主要介绍了使用javascript实现博客园页面右下角返回顶部按钮的思路及源码,非常不错,这里推荐给小伙伴们
    2015-05-05
  • 仿iPhone通讯录制作小程序自定义选择组件的实现

    仿iPhone通讯录制作小程序自定义选择组件的实现

    这篇文章主要介绍了仿iPhone通讯录制作小程序自定义选择组件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05

最新评论