【问题标题】:Chrome getUserMedia Not Requesting Permission LocallyChrome getUserMedia 未在本地请求权限
【发布时间】:2012-11-23 07:21:13
【问题描述】:

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

【问题讨论】:

    标签: html google-chrome


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      尝试安装Simple Server(轻量级),一键安装,可下载here

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 比设置网络服务器进行简单测试要快得多
        • 我试过了,但似乎没有用。我正在使用 Chrome 版本 48.0.2564.116 m。
        【解决方案4】:

        如何在 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,它会告诉您应该使用什么“命令行”调用。只需添加 --allow-file-access-from-files 即可。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 这是正确的:getUserMedia 仅在从服务器上的文件运行时才有效。它不适用于 file:// URL。你会得到一个PERMISSION_DENIED: 1 错误,但这不是很直观!
          • @SamDutton:我提交了一份错误报告,要求提供更直观的错误消息:code.google.com/p/chromium/issues/detail?id=257104
          • 伙计们,我有 WAMP,我也有同样的问题!它在“真实”网络上工作正常.. localhost,我收到我设置的错误消息。有什么想法???
          • 为什么不允许您在自己的系统上使用相机?愚蠢的
          • Mac 用户:Python 已经安装好了,所以这是一个非常简单快捷的解决方案
          猜你喜欢
          • 1970-01-01
          • 2019-08-01
          • 1970-01-01
          • 2021-01-13
          • 2017-04-01
          • 2014-03-04
          • 2016-12-14
          • 2015-07-24
          • 2016-11-12
          相关资源
          最近更新 更多