检测Javascript中的Chrome媒体设置
Chrome最近发布了一项媒体设置更新,提示用户授予允许访问其麦克风和摄像头的网站的权限。有没有办法在Javascript中检测这些设置 我有一个带有麦克风功能的flash播放器(最终将基于HTML5)。玩家目前有一个关于如何在开始会话之前授予权限的友好教程。但是,自从Chrome发布更新后,flash player和Chrome权限发生冲突,导致flash出现错误,直到用户允许/拒绝Chrome设置提示。在将播放器移动到HTML5之前,我想做的是检测浏览器是否为Chrome(具有适当版本),以及用户设置是否未设置,然后显示附加教程屏幕。两件事:检测Javascript中的Chrome媒体设置,javascript,google-chrome,Javascript,Google Chrome,Chrome最近发布了一项媒体设置更新,提示用户授予允许访问其麦克风和摄像头的网站的权限。有没有办法在Javascript中检测这些设置 我有一个带有麦克风功能的flash播放器(最终将基于HTML5)。玩家目前有一个关于如何在开始会话之前授予权限的友好教程。但是,自从Chrome发布更新后,flash player和Chrome权限发生冲突,导致flash出现错误,直到用户允许/拒绝Chrome设置提示。在将播放器移动到HTML5之前,我想做的是检测浏览器是否为Chrome(具有适当版本),以
- 这是特定于Chromes实现的,因此除非Chrome向您的应用程序提供该信息,否则您无法判断用户授予了哪些权限。也就是说,没有API可以查询此信息
- 它甚至不是Chrome存储的东西。如果你看看下面,你会发现它是基于每个应用的,而不是一次性的。Chrome只会记住为特定应用程序授予的权限,如果该应用程序通过
请求权限。如果它通过https
请求它,那么它将忘记授予了哪些权限http
getMediaApi
的版本)。然后它是一个简单的如果检查:
if (version >= 21){
//ask permission though the getMediaApi
} else{
//ask permission though flash
}
我无意中找到了一种很好的方法,不需要cookie(人们可以在带外更改这些设置,这样cookie可能会不正确),也不需要Chrome提供一点点帮助(它不需要)
但我们也希望显示教程屏幕-如果权限设置不被记住,上面的代码将弹出chrome信息框。但是如果没有来自chrome的权限事件,或者没有查询权限的API,我们如何知道何时显示chrome+infobox教程内容
我的诀窍是自动显示内容,但只是在延迟之后。以前接受或拒绝权限的人将永远不会看到此内容,因为我们的成功/错误处理程序会在延迟之前将其移动。因此,给getUserMedia调用一点时间来检测/反应-如果浏览器还没有移动,那么是时候显示帮助内容了
setTimeout(function() {
if (!madeMicDescision) {
//display chrome/infobox/getUserMedia permissions help content
}
}, 2000);
不完美(真的很奇怪和悲伤),但似乎适用于最常见的情况。非常感谢您的见解@是的,很高兴我能帮上忙。我经常玩HTML5的东西,所以我以前遇到过这样的问题:你最终解决了这个问题吗?谢谢。@AdamRabung请看这里的相关问题:我最后设置了一个标志,该标志以过期日期存储在用户的本地存储中。该标志在navigator.getUserMedia API的成功回调中设置。
setTimeout(function() {
if (!madeMicDescision) {
//display chrome/infobox/getUserMedia permissions help content
}
}, 2000);