getUserMedia权限对话框在FireFox中消失



当我访问getUserMedia时,会弹出一个权限对话框,我的网站会等待,直到用户接受或阻止请求。该部分适用于Chrome 47。

然而,在FireFox 43中,(至少)当对话框可见时,用户可以单击其他任何位置,它将消失,并且永远不会调用getUserMedia的回调。然后用户无法授予权限,我的网站被困在等待中。点击其他地方也很容易,所以我预计会有很多"麦克风坏了"的支持电话。

(对我来说,这似乎是FireFox中的一个错误,因为Chrome在用户点击对话框之前一直保持对话框可见。)但无论如何,有什么办法吗?

例如,是否有一种方法可以检测权限对话框当前是否可见?

或者有没有一种方法可以通过使用setTimeout在javascript中重新调用该对话框?

有人对如何改善用户体验有其他建议吗?

我唯一能想到的就是发布一条消息,大意是"正在等待使用麦克风的权限。如果你没有看到权限对话框,请刷新此页面。"肯定有比这更好的东西。

谢谢!

权限对话框只是最小化。单击对话框挂起的灰色麦克风(或相机)图标,该图标仍在URL栏中,对话框会重新显示并可以应答。

这不是一个bug,因为它的设计目的是比Chrome更不具侵入性,可以说,在用户放弃权限之前,它不会让用户成为人质,但这种行为似乎确实让很多人感到困惑。看见https://bugzil.la/1004055.

没有可靠的方法可以检测权限对话框当前是否可见,但如果您在页面上的任何位置检测到鼠标点击,并且没有得到响应,那么很可能没有。

一种解决方法是发出另一个getUserMedia调用(通过setTimeout或其他方式)。它不应该崩溃。如果是,请提交一个错误。

另一种解决方法是使用location.refresh()以编程方式刷新页面。

如果您的网站无法在没有麦克风的情况下工作,或者您检测到用户操作表明用户被卡住,那么可能会出现类似"等待使用麦克风的权限。如果不可见,请单击URL栏中的麦克风图标以调用权限对话框。"

最新更新