我正试图在Chrome中使用navigator.getUserMedia;但是,它在本地提供时不是请求权限(file:///whatever/index.html),而是在JSFiddle(http://jsfiddle.net/EBsvq/)和其他网站上提供。
有谁知道这个的原因?我需要以某种方式重置我的权限吗?
以下是我在本地使用的内容:
<html>
<head></head>
<body>
<button id="btn">Start</button>
<script type="text/javascript">
/*! jQuery v1.8.3 jquery.com | jquery.org/license */
//JQuery goes here
</script>
<script type="text/javascript">
navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.getUserMedia;
$(function(){
$('#btn').click(function(){
navigator.getUserMedia({audio: true},
function(){
alert('success');
},
function (err) {
alert('fail: ' + JSON.stringify(err));
}); }); });
</script>
</body>
</html>
答案 0 :(得分:19)
Chrome会阻止file:///
URI上的大量内容,而不会报告安全错误(例如Geolocation)。您最好的选择是从本地网络服务器运行,如果您安装了Python,请尝试SimpleHTTPServer。
答案 1 :(得分:14)
打开chrome时,您可以使用命令行中的--allow-file-access-from-files
标志,以便能够使用本地文件系统中的getUserMedia
。
答案 2 :(得分:1)
我遇到了类似的问题,但与麦克风访问有关。 如果您通过file://提供文件,Chrome会阻止设备访问(请注意,在Microsoft Edge和Firefox上,它通过file :: //工作)。
我找到了Chrome的一个解决方案:
要首次启动Chrome,请右键点击Chrome图标,然后点击属性。在“快捷方式”选项卡中,将所有命令行参数附加到目标值2。
答案 3 :(得分:0)
如何在OS X中执行命令行arg有点不重要。它通常看起来像这样
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files
如果你像我这样的怪人,并将你的应用放在~/Applications
,那么它将是
"/Users/yougohere/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files
如果这些都不起作用,请在Chrome地址栏中输入chrome://version
,它会告诉您&#34;命令行&#34;你应该使用的调用。只需添加--allow-file-access-from-files
即可。
答案 4 :(得分:0)
尝试安装简单服务器(重量轻),一键安装,可以下载here
安装完成后,请将应用程序引用到您要运行的页面。