有没有一种可靠的方法来检测用户是否在jQuery中使用移动设备?类似于CSS @media属性的东西?如果浏览器在手持设备上,我想运行不同的脚本.
jQuery $.browser函数不是我想要的.
我需要将用户显示媒体(屏幕截图)连接到 webRTC 应用程序。
以下代码用于启动屏幕捕获:
navigator.mediaDevices.getDisplayMedia({video: true})
Run Code Online (Sandbox Code Playgroud)
这会提示用户有关屏幕捕获的信息,并创建一个视频流,在授予权限后即可使用该视频流。但是我无法让它在 iOS 或 Android 设备上运行。
iPad 我正在测试此功能,但无法找到navigator.mediaDevices.getDisplayMedia - undefined
(iOS 13.3)
当我尝试调用 Android 上的 Chrome (v79) 时,它显示以下错误:
DOMException:无效状态
根据此: https: //developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia 如果代码不是由用户操作启动,则可能会生成错误,但这不应该是问题就我而言,因为代码是这样调用的:
startScreenSharing = event => {
navigator.mediaDevices.getDisplayMedia({video: true})
}
<Button onClick={this.startScreenSharing} />
Run Code Online (Sandbox Code Playgroud)
事件变量保存有效事件,但我仍然收到“无效状态”错误。
这一定是我所缺少的,因为它在桌面 Chrome 和 Safari 上运行良好。
编辑
我遇到了这个:getDisplayMedia 和屏幕录制的演示,并在此网页上生成了相同的错误。这可能是由于我的硬件设备设置造成的吗?
Firefox 从 52 版开始,将通过以下方式支持屏幕共享:
navigator.mediaDevices.getUserMedia({ video: { mediaSource: 'screen' }})
.then(stream => { ... });
Run Code Online (Sandbox Code Playgroud)
查看此测试页以查看其实际效果。
我想知道是否有办法检测浏览器是否支持{ mediaSource: 'screen' }?
我只想提供与具有共享能力的用户共享屏幕的选项。所以我希望能够检测到这一点。