10

我们可以通过 向屏幕或窗口请求媒体流navigator.mediaDevices.getDisplayMedia()。但是,这会立即提示用户决定使用哪种捕获方式。我需要检查浏览器/平台是否甚至支持屏幕捕获。

当然,也可以检查'getDisplayMedia' in navigator.mediaDevices,但这只是告诉我们浏览器是否支持 API。特别是在 FF 和 Android 上的 Chrome 上,定义了 API,我可以调用getDisplayMedia(),但它总是立即返回NotAllowedError错误(这是可以预料的:根据 caniuse,移动浏览器尚不支持getDisplayMedia。)

接下来,我尝试检查navigator.mediaDevices.getSupportedConstraints(). 但是,我的移动 FF 返回与我的桌面 FF 完全相同的对象。特别navigator.mediaDevices.getSupportedConstraints().mediaSourcetrue在这两种情况下。最后,返回的数据navigator.mediaDevices.enumerateDevices()对我也没有帮助。我只得到一个我无法以任何方式解释的设备和组 ID(对吗?)。

getDisplayMedia是否可以预先检测是否支持屏幕截图?

注意这个问答看起来很相似,但是getUserMedia已经很老了)

4

1 回答 1

6

不幸的是,没有直接的方法来检测getDisplayMedia是否可以在这些浏览器上运行。

您今天所能做的就是通过浏览器嗅探 UA 字符串,以检测您不在缺乏支持的移动设备上。¹

我已根据您的问题提交了有关规范的问题,以查看getDisplayMediaundefined在不受支持时是否更好。


1. caniuse声称 Opera Mobile 支持,但我测试时似乎不是这样。

于 2019-11-15T14:36:41.607 回答