getFserMedia权限对话框在FireFox中消失

时间:2016-01-08 02:59:21

标签: javascript firefox getusermedia

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

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

(这对我而言似乎是FireFox中的一个错误,因为Chrome会在用户点击它之前保持对话框可见。)但无论如何,是否有解决方法?

例如,有没有办法检测权限对话框当前是否可见?

或者有没有办法通过使用setTimeout在javascript中重新召唤该对话框?

有没有人对如何改善这种用户体验有另一个建议?

我能想到的唯一一件事就是发出一条消息,说明“等待使用麦克风的许可。如果你没有看到权限对话框,请刷新此页面。”必须有比这更好的东西。

谢谢!

1 个答案:

答案 0 :(得分:3)

仅最小化权限对话框。单击对话框挂起的灰色麦克风(或摄像头)图标,该图标仍在URL栏中,对话框会重新生成并可以回答。

这不是一个错误,因为它设计为比Chrome更少侵入性,不要让网站让用户成为人质,可以这么说,直到他们放弃权限,但这种行为似乎让很多人感到困惑。请参阅https://bugzil.la/1004055

没有万无一失的方法可以检测权限对话框当前是否可见,但是如果您在页面的任何位置检测到鼠标点击,并且您没有得到回复,则可能不是。

一种解决方法是发出另一个getUserMedia来电(通过setTimeout或其他方式)。它不应该崩溃。如果确实如此please file a bug

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

如果您的网站无法在没有麦克风的情况下工作,或者您检测到表明用户卡住的用户操作,则可能会出现“等待使用麦克风的许可。请点击网址中的麦克风图标如果不可见,则调用权限对话框。“