所以使用 navigator.webkitGetUserMedia 的标准方式是这样的:
function success() {
console.log('User accepted');
}
function deny() {
console.log('User rejected');
}
navigator.webkitGetUserMedia({video: true, audio: true}, success, deny);
我正在开发的网站绝对需要使用用户的网络摄像头和麦克风(实际上是使用 Flash,但现在似乎要通过这个 API),所以我正在尽一切努力确保用户始终知道他们需要什么单击以使该站点正常工作。
- 如果没有调用任何函数,则假定对话框正在显示,并向用户显示说明。
- 如果调用了拒绝,请说明需要网络摄像头访问权限,并向他们展示他们可以单击 Chrome URL 栏中的摄像头图标来更改他们的决定。
- 当然,如果调用success,那么用户已经接受,并照常继续。
这是踢球者;您可以通过将上述 Javascript 粘贴到您喜欢的任何网站(在 Chrome 中)来跟进。如果用户导航到新网页,或刷新当前页面而不接受、拒绝或关闭下拉列表,他们将不会再次看到浏览器会话的当前域的权限对话框。
navigator.webkitGetUserMedia(...)
再次调用将不会显示权限对话框,相机图标也不会出现在 URL 栏中。控制台甚至不记录“用户被拒绝”。更重要的是,对于许多用户来说,这个下拉菜单很容易被意外忽略。唯一可用的解决方法是完全关闭浏览器并重新打开它(或者,手动浏览我们不想强迫用户进入的复杂设置菜单)。
我可以在这里与任何人确认这是“以某种方式”意图,还是我遗漏了什么?