Chrome getUserMedia未在本地请求权限

时间:2012-12-05 12:52:18

标签: html5 google-chrome

我正试图在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>

5 个答案:

答案 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的一个解决方案:

  1. 在网址chrome:// version /
  2. 中打开chrome类型
  3. 复制&#34;命令行&#34;的值命令行中的字段并追加 --allow-file-access-from-files并运行它
  4. 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

安装完成后,请将应用程序引用到您要运行的页面。