我正在尝试使用getUserMedia API编写一个脚本来检测用户何时允许/拒绝使用麦克风。
编辑:我已经向你展示了这个问题:http://jsfiddle.net/4rgRY/
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true, video: false}, function(stream) {
console.log('Yayy!');
}, function(err){
console.log("There was an error->: ",err);
});
} else {
console.log('getUserMedia not supported');
}
它在Chrome上工作正常,但是当我在Firefox(27和Firefox Nightly 30a1)中尝试,并且您选择“不是现在”时,它不会触发任何回调,无论是成功还是错误回调。所以我的应用程序认为允许但不能正常工作。
如果您在Firefox中选择任何其他选项,例如“始终共享”,“永不共享”或“不共享”,则工作正常,只需使用“不立即”选项。
可能是Firefox的错误?或者我的代码有问题吗?
答案 0 :(得分:1)
“不是现在”意味着它所说的内容:用户尚未决定是否允许或拒绝。在用户选择它之后,他们可以重新打开要求许可的弹出窗口(通过单击小视频图标,如果选择该选项,则会选中该图标)并选择是否授予它。
基本上,单击“Not now”与以下用户操作完全相同:
并且您的代码应该像处理这些用户操作一样处理它。
答案 1 :(得分:1)
我想答案并没有真正给出。我的应用如何检测用户决定不做出选择的事实?没有做出选择意味着我的应用程序无法访问摄像头和麦克风,因此它应该在getUserMedia IMO中触发错误回调。