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
事件。我更喜欢将其作为本地全局变量,因为现在它迫使我将此值发出到处理识别的范围之外。您看到了吗?:这可以处理几种情况。你的问题的解决方案不在这里吗?是的,他们使用的技术与我在示例中介绍的相同。所以我想这是一条路……:)