我的应用程序中有一个模式对话框,使用getUserMedia
来显示用户摄像头的视频。这会导致出现“拒绝/允许”栏。假设用户在点击“拒绝”或“允许”之前关闭对话框。酒吧仍然存在,即使将使用它的元素已经消失。取消getUserMedia请求
有没有办法通知浏览器它可以隐藏权限请求,即使用户从未与其交互过?
我的应用程序中有一个模式对话框,使用getUserMedia
来显示用户摄像头的视频。这会导致出现“拒绝/允许”栏。假设用户在点击“拒绝”或“允许”之前关闭对话框。酒吧仍然存在,即使将使用它的元素已经消失。取消getUserMedia请求
有没有办法通知浏览器它可以隐藏权限请求,即使用户从未与其交互过?
我想你想是这样的:
$("body").on('click', "#stop_button", function(e) {
e.preventDefault();
mediaStream.stop();
});
mediaStream是,当时我叫getUserMedia
navigator.getUserMedia(
{
video: true,
audio: false
},
function(stream) {
if (navigator.mozGetUserMedia) {
video.mozSrcObject = stream;
} else {
var url = window.URL || window.webkitURL;
video.src = url ? url.createObjectURL(stream) : stream;
}
mediaStream = stream;
video.play();
},
function(error) {
console.log("ERROR: " + error);
}
);
在你的榜样
这样定义我的全局变量,你会调用stop()上当关闭对话框时你的媒体流 - 你必须为此创建一个事件处理程序。
看看这个Tutorial on getUserMedia为一个完整的工作示例和现场演示。
我还没有一台电脑可以进行测试,但是我相信如果用户还没有允许/拒绝它,这不会使权限横幅消失。至少在几个月前我正在尝试这种情况时就是这种情况。 – Dave
当用户关闭您的对话框,重新加载页面以清除许可请求:
location.reload();
我已经在Firefox和Chrome 41(金丝雀)测试这和它的作品出现。
警告:Chrome 39(截至撰写本文时的当前版本)似乎有一个错误,在这种情况下效果不好。我第一次导航到不能工作的页面,但手动刷新页面后,它开始工作。
我意识到这个答案可能不会立即有用,但一旦Chrome 41发布它应该工作。
目前无法在不重新加载页面的情况下清除权限提示。
不,并且存在安全原因。如果域名不在允许/拒绝列表中,浏览器会询问每次域名尝试访问媒体时。 –
我注意到我的问题措辞不妥。这听起来像是我问了一些其他问题,而不是我真正想问的问题。希望我的编辑能够充分阐明这个问题。 –
我希望你不要介意,但我已经将问题简化为更简单的形式,希望有人更可能回答。有多个请求的子问题可以通过使用更大范围的变量来解决,例如全局流对象和授予访问时调用的全局函数。然后,哪个回调触发并不重要,因为它们都具有相同的效果。 – Dave