【问题标题】:Unable to get property 'enumerateDevices' of undefined or null reference无法获取未定义或空引用的属性“enumerateDevices”
【发布时间】:2017-04-03 11:31:06
【问题描述】:

我正在使用enumerateDevices (See reference here) 来获取用户的摄像头和麦克风列表。

这段代码在 Chrome 上运行良好:

$(document).ready(function(){
    navigator.mediaDevices.enumerateDevices()
    .then(gotDevices)
});

但是由于IE不支持,所以报错:

无法获取未定义或空引用的属性“enumerateDevices”

我的问题:我可以使用任何适用于所有浏览器的替代方法吗?

【问题讨论】:

  • 所以您说的是 InternetExplorer,而不是 Edge 对吧?因为 Edge 确实支持enumerateDevices,但 IE 不支持来自 MediaStream API 的任何内容,所以我想知道您将如何处理这个设备列表,即使有可能得到它? (ps:它不是来自 web API,可能是一些 flash,或者 java,或者谁知道,可以告诉)。
  • 是的,我也需要 IE 支持。
  • @Kaiido 我使用 IE 10,11 支持的 webRTC。获取设备只是为了确保用户有相机和麦克风。
  • 怎么样? IE 不支持 getUserMedia,我猜你正在使用一些 flash 或 java 后备,不是吗?如果是这样,请不要标记您的问题 javascript,您将没有任何 js 解决方案。如果他们提供了以某种方式获取此列表的方法,请与他的后备作者联系
  • IE 确实支持它。

标签: javascript internet-explorer getusermedia mediastream enumerate-devices


【解决方案1】:

navigator.mediadevices 也可以在不安全的上下文中未定义。

您需要使用https: 而不是http:


chrome 上有一些实验标志允许它:

chrome://flags/#allow-insecure-localhost

chrome://flags/#unsafely-treat-insecure-origin-as-secure

【讨论】:

    【解决方案2】:

    根据mediaDevices.enumerateDevices方法api。此方法不支持 IE。

    此方法的浏览器兼容性是:

    铬:45.0
    FireFox(GecKo) : 39
    Internet Explorer:不支持
    歌剧:不支持
    野生动物园(webKit):不支持

    希望这会有所帮助!

    【讨论】:

    • Flash 可以访问用户的摄像头和麦克风(如果他们在 Flash 控制面板中启用了它)...您可能首先对 mediaDevices 支持进行功能测试,如果没有回退到第三方 Flash控件(flash 是 MSIE 中的 ActiveX 控件)。此网络搜索链接列出了 Flash 聊天应用程序。 bing.com/search?q=flash+chat+applications
    猜你喜欢
    • 1970-01-01
    • 2014-08-01
    • 2020-04-28
    • 2016-08-16
    • 2017-05-18
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多