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

Kat*_*314 6 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);
Run Code Online (Sandbox Code Playgroud)

我正在开发的网站绝对需要使用用户的网络摄像头和麦克风(实际上,使用Flash,但现在似乎经历了这个API),所以我试图做所有事情以确保用户始终知道他们需要什么单击该站点工作.

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

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

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

我可以和这里的任何人确认这是"某种意图",或者是否有我遗漏的东西?

Jam*_*ess 6

看来这是一个已知的bug.

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

该错误的评论主题中目前有两个 补丁,所以至少你知道他们正在努力解决这个问题.不幸的是,同时似乎没有任何关于该bug的真正解决方法.

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