版本60之后,非HTTPS网站禁用了webkitSpeechRecognition。 这主要是用于发展目的的主要问题。有没有办法绕过/禁用此安全功能?
问题是,如果您想要访问麦克风,应该询问您的弹出窗口是否永远不会显示在HTTP上,而是在HTTPS上显示。
为DEV设置HTTPS并不容易,所以我真的需要一种方法来绕过它。
答案 0 :(得分:2)
简短回答,否。你无法禁用它。
但是,如果您有Windows,可以通过IIS中的localhost
来托管它。有一个关于如何做到这一点here的教程。在IIS中注册后,您必须添加一些权限,以便在浏览器中使用localhost
进行查看。
如果您正在运行Linux,则可以安装Apache2并将其放入/var/www/public_html/{websitename}.
然后您只需通过浏览器localhost
访问它。有一个关于安装Apache here的教程。
在使用本地文件时,确实应该有一种方法可以让麦克风在浏览器中工作。一旦你设置localhost
,就可以使用起来相对简单了。
答案 1 :(得分:1)
我在本地试过这个并且在没有HTTPS的情况下运行良好。如果直接从文件系统提供文件,它不起作用,但在静态文件服务器的帮助下(我使用python3 -m http.server
)我设法让它工作。
希望它有所帮助!
<html>
<head>
<title>Teste</title>
</head>
<body>
<button id="btn">capture</button>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script>
<script>
$(document).ready(function(){
var recognition = new webkitSpeechRecognition();
recognition.onresult = function(event) {
console.log(event)
}
var started = false;
$('#btn').click(function(){
if (started){
recognition.stop();
$(this).html('capture');
started = false;
}
else{
recognition.start();
started = true;
$(this).html('stop');
}
});
})
</script>
</body>
</html>
编辑:jQuery没有必要。这只是我的一个老习惯: - )
答案 2 :(得分:-1)
为什么不在您的开发服务器上使用免费的https证书(如letsencrypt)?我的意思是它现在是免费的,然后你可以通过https开发。