Javascript 测试用户';s麦克风使用权限状态

Javascript 测试用户';s麦克风使用权限状态,javascript,google-chrome,webkit,speech-recognition,webspeech-api,Javascript,Google Chrome,Webkit,Speech Recognition,Webspeech Api,创建webkitSpeechRecognition实例后,如何最好地了解用户是否允许麦克风访问 我想到的第一个想法是使用webkitSpeechRecognition:onstart方法更新本地状态引用: var权限=false; var recognition=new-webkitSpeechRecognition(); 识别。连续=正确; recognition.interimResults=true; recognition.onstart=function(){permission=tr

创建
webkitSpeechRecognition
实例后,如何最好地了解用户是否允许麦克风访问

我想到的第一个想法是使用
webkitSpeechRecognition:onstart
方法更新本地状态引用:

var权限=false;
var recognition=new-webkitSpeechRecognition();
识别。连续=正确;
recognition.interimResults=true;
recognition.onstart=function(){permission=true;}
但这似乎是多余的,因为浏览器可能已经设置了全局只读值

有什么想法吗?

基于,似乎没有浏览器范围的属性来声明用户的权限

正确的解决方案(就目前而言)是侦听
onstart
onend
事件,以便在语音识别逻辑的范围内设置属性

var permission  = false;
var recognition = new webkitSpeechRecognition();
recognition.continuous     = true;
recognition.interimResults = true;

// Start event is fired when user accept
recognition.onstart = function() { 
  permission = true; 
}

// End event is fired when the permission expire
recognition.onend   = function() { 
  permission = false; 
}

recognition.start();

在创建之前检查权限是否有原因?不是在创建之前,而是在用户接受之前,是的,主要是为了显示问题。接口将绑定到此值。我注意到,当用户空闲时,权限可能在没有ssl的情况下过期。我想现在最好是使用
onstart
onstop
事件。我更喜欢将其作为本地全局变量,因为现在它迫使我将此值发出到处理识别的范围之外。您看到了吗?:这可以处理几种情况。你的问题的解决方案不在这里吗?是的,他们使用的技术与我在示例中介绍的相同。所以我想这是一条路……:)