Javascript 检查客户是否有摄像头的正确方法
我正在构建一个web应用程序,我需要在用户单击按钮后检查客户端是否有摄像头 我目前正在使用这个脚本,但它似乎不适用于IEJavascript 检查客户是否有摄像头的正确方法,javascript,camera,client,frontend,Javascript,Camera,Client,Frontend,我正在构建一个web应用程序,我需要在用户单击按钮后检查客户端是否有摄像头 我目前正在使用这个脚本,但它似乎不适用于IE navigator.getMedia = ( navigator.getUserMedia || // use the proper vendor prefix navigator.webkitGetUserMedia || navigator.mozGetUserMedia ||
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));
那么最好的方法是什么呢?可能有以下问题:
navigator.getUserMedia();
此功能已从Web标准中删除。虽然有些
浏览器可能仍然支持它,它正在被删除。
避免使用,并尽可能更新现有代码;见
本页底部的兼容性表用于指导您的决策。
请注意,此功能可能随时停止工作
通过以下途径获得:
尝试:mediaDevices.getUserMedia()
作为单例
navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
/* use the stream */
})
.catch(function(err) {
/* handle the error */
});
即使它不是解决方案,您也将对代码进行未来验证
编辑:
T.J.Crowder指出,实际上,不推荐使用的
navigator.getUserMedia()
被列为不在IE中工作。(FWIW,我不会在navigator
上分配属性,但这不可能是上面的内容不在IE中工作的原因)。这可能是它失败的原因;他对奇怪的事情很敏感。当然,我们肯定知道OP是否会准确描述“不工作”在这里的含义。@Pointy:是的,我也在想这两件事…:-)它在IE中不起作用,因为IE不支持getUserMedia
(鉴于该功能现在已被弃用,我怀疑Edge也不支持)。旁注:navigator.msGetUserMedia
是无用的,因为没有这样的属性。IE只是不支持它更确切地说,在该页面的底部,它清楚地表明Internet Explorer不支持它(不支持或不支持)。谢谢你!我会尽快尝试并给你反馈我想指出我使用了这个解决方案。问题没有解决,但我可以在其他浏览器上使用cam,并在IE上处理错误。