【问题标题】:Proper way to check if client has camera检查客户端是否有摄像头的正确方法
【发布时间】:2018-01-16 14:08:03
【问题描述】:

我正在构建一个网络应用程序,我需要在用户单击按钮后检查客户端是否有摄像头。

我目前正在使用这个脚本,但它似乎不适用于 IE。

navigator.getMedia = ( navigator.getUserMedia || // use the proper vendor prefix
                       navigator.webkitGetUserMedia ||
                       navigator.mozGetUserMedia ||
                       navigator.msGetUserMedia);

    navigator.getMedia({video: true}, function() {
      //has camera
    }.bind(this), function() {
      //no camera
    }.bind(this));

那么最好的方法是什么?

【问题讨论】:

  • (FWIW,我不会分配给navigator 上的属性,但这不太可能是上述在 IE 上不起作用的原因。)
  • 可能是它失败的原因; IE 对奇怪的事情很敏感。当然,我们肯定知道 OP 是否会准确描述“不起作用”的含义。
  • @Pointy:是的,我也在考虑这两件事...... :-)
  • 它在 IE 中不起作用,因为 IE 不支持 getUserMedia(鉴于该功能现在已被弃用,我怀疑 Edge 也支持)。
  • 旁注:navigator.msGetUserMedia 没用,因为没有这样的属性。 IE 就是不支持它

标签: javascript camera client frontend


【解决方案1】:

可能有问题:

navigator.getUserMedia();

此功能已从 Web 标准中删除。虽然有些 浏览器可能仍然支持它,它正在被删除。 尽可能避免使用它并更新现有代码;见 本页底部的兼容性表可指导您做出决定。 请注意,此功能可能随时停止工作。

通过以下方式获得: MDN web docs

尝试:mediaDevices.getUserMedia() 单身

navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
  /* use the stream */
})
.catch(function(err) {
  /* handle the error */
});

即使不是解决方案,您的代码也会经得起未来考验。

编辑:

T.J. Crowder 指出,确实已弃用的navigator.getUserMedia(); 被列为在 IE 中不起作用。

【讨论】:

  • 更重要的是,在该页面的底部,它清楚地表明 Internet Explorer 不支持它(是否已弃用)。
  • 谢谢 DanteTheSmith!我会尽快尝试并给你反馈
  • 我想指出我使用了这个解决方案。问题没有解决,但我可以在其他浏览器上使用凸轮并处理 IE 上的错误。
猜你喜欢
  • 2010-12-28
  • 2021-01-27
  • 2020-09-09
  • 2018-04-05
  • 1970-01-01
  • 2013-01-16
  • 2011-12-18
  • 2010-10-16
相关资源
最近更新 更多