取消getUserMedia请求

时间:2013-01-24 01:29:12

标签: javascript html5 getusermedia

我的应用程序中有一个模态对话框,它使用getUserMedia显示来自用户相机的视频。这会导致出现“拒绝/允许”栏。假设用户在单击“拒绝”或“允许”之前关闭对话框。即使使用它的元素已经消失,该栏仍然存在。

有没有办法通知浏览器它可以隐藏权限请求,即使用户从未与它进行过互动?

2 个答案:

答案 0 :(得分:2)

当用户关闭对话框时,请重新加载页面以使用以下命令清除权限请求:

  location.reload();

我已经在Firefox和Chrome 41(Canary)中对此进行了测试,并且可以在那里运行。

警告:Chrome 39(截至本文撰写时的当前版本)似乎有一个错误,其中这种方法效果不佳。我第一次导航到页面时它不会工作,但是一旦手动刷新页面,它就会开始工作。

我意识到这个答案可能不会立即有用,但是一旦Chrome 41出货它应该可以工作。

目前无法在不重新加载页面的情况下清除权限提示。

答案 1 :(得分:-4)

我想你想要这样的东西:

    $("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以获取完整的工作示例和现场演示。