Firefox永远不会解析navigator.mediaDevices.getUserMedia()

时间:2017-06-10 21:13:10

标签: javascript google-chrome firefox promise webcam

我正在尝试使用新的基于Promise的WebRTC /媒体工具,以获取反馈,如果用户允许访问相机和/或麦克风,如此处所述https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia

以下代码片段,仅使用浏览器的开发人员工具注入,在授予访问权限时永远不会在Firefox上填充Promise,但在Chrome上它可以按预期工作。

(使用Firefox 53 32位测试,Chrome 59 64位测试)

navigator.mediaDevices.getUserMedia({
        "audio": true, 
        "video": true
    })
      .then(() => console.log("OK!"))
      .catch(() => console.log("NOPE"))

承诺似乎永远在等待。

重现的步骤:

  1. 打开任何https加密页面(所以firefox不会抱怨)
  2. 打开开发人员工具,进入控制台
  3. 粘贴上面的代码段
  4. 允许弹出窗口中的摄像头/麦克风访问
  5. 没有
  6. 这是Firefox中的错误还是代码片段有问题? 为了符合MDN文档,我还尝试使用good'ol函数而不是ES6箭头函数 - 具有相同的效果。

2 个答案:

答案 0 :(得分:0)

Firefox 53.0.3似乎没问题。我得到的输出如下:

Firefox 53 OK

答案 1 :(得分:0)

禁用所有插件(特别是NoScript - 即使设置"脚本全局允许"为真)后,它似乎运行正常。

很抱歉这个不必要的问题,我想,并且感谢重新确认我,问题不是Firefox本身,所以找到解决方案的正确方法!