Google Chrome的webkitGetUserMedia - 如果用户忽略该对话框该怎么办?

时间:2013-07-10 17:51:20

标签: javascript google-chrome getusermedia

所以navigator.webkitGetUserMedia使用的标准方式是这样的:

function success() {
    console.log('User accepted');
}

function deny() {
    console.log('User rejected');
}

navigator.webkitGetUserMedia({video: true, audio: true}, success, deny);

我正在开发的网站绝对需要使用用户的网络摄像头和麦克风(实际上,使用Flash,但现在似乎经历了这个API),所以我正在尽一切努力确保用户始终知道他们需要点击该网站才能工作。

  • 如果两个函数均未被调用,则假设该对话框正在显示,并向用户显示说明。
  • 如果调用deny,请说明需要访问网络摄像头,并向他们展示他们可以点击Chrome网址栏中的相机图标来更改他们的决定。
  • 当然,如果成功被调用,那么用户已经接受并继续照常进行。

这是踢球者;您可以将上述Javascript粘贴到您喜欢的任何网站(在Chrome中)。如果用户导航到新网页,或刷新当前页面而不接受,拒绝或取消下拉列表,他们将不会再次看到浏览器会话的当前域的权限对话框。 / p>

再次拨打navigator.webkitGetUserMedia(...)显示权限对话框,相机图标也不会显示在网址栏中。控制台甚至没有记录“用户被拒绝”。更重要的是,对于许多用户来说,这个下拉列表很容易被忽略。可用的唯一解决方法是完全关闭浏览器并重新打开它(或者,手动浏览我们不想强迫用户进入的复杂设置菜单。)

我可以与这里的任何人确认这是“某种意图”,还是有些东西我不知道?

1 个答案:

答案 0 :(得分:6)

这似乎是一个已知的错误。

  

Issue 252904:mic / cam权限上的信息栏弹出会导致意外的权限状态;导致无法恢复的重新加载权限

该错误的评论主题中目前有two patches,所以至少你知道他们正在努力解决这个问题。不幸的是,这个bug似乎没有任何真正的解决方法。

有一点值得一提:如果你关闭标签然后重新打开网址,那似乎会强制再次显示权限对话框。我知道这不是一个真正的解决方案,但至少它比关闭整个浏览器更好(我认为这是你现在所做的)。