18

我正在尝试在 Chrome 中使用 navigator.getUserMedia;但是,它在本地提供时(文件:///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>
4

5 回答 5

19

file:///Chrome 在不报告安全错误的情况下阻止了 URI上的很多内容(例如Geolocation)。您最好的选择是从本地网络服务器运行,如果您安装了 Python,请尝试SimpleHTTPServer

于 2012-12-05T14:41:57.107 回答
14

您可以--allow-file-access-from-files在打开 chrome 时使用命令行中的标志,以便能够getUserMedia从本地文件系统中使用。

于 2014-02-25T23:16:35.840 回答
1

我遇到了类似的问题,但与麦克风访问有关。如果您通过 file:// 提供文件,Chrome 会阻止设备访问(请注意,在 Microsoft Edge 和 Firefox 上,它通过 file::// 工作)。

我为 Chrome 找到的一种解决方案:

  1. 在 URL chrome://version/ 中打开 chrome 类型
  2. 在命令行中复制“命令行”字段的值并附加 --allow-file-access-from-files 并运行它
  3. Chrome 打开并输入您的 file:// 网址后。

要始终这样启动 Chrome,请右键单击 Chrome 图标,然后单击属性。在快捷方式选项卡中,将 2 中的所有命令行参数附加到目标值。

于 2016-03-13T17:45:29.277 回答
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://version您的 Chrome 地址栏,它会告诉您应该使用什么“命令行”调用。只需添加--allow-file-access-from-files即可。

于 2014-08-22T23:20:18.453 回答
0

尝试安装简单服务器(轻量级),一键安装,可以在这里下载

安装后,将应用程序指向您要运行的页面。

于 2014-10-02T19:20:17.980 回答