【问题标题】:Detect if browser is waiting for media permission?检测浏览器是否正在等待媒体许可?
【发布时间】:2015-12-15 10:48:08
【问题描述】:

javascript 中是否有办法检查浏览器(任何浏览器)是否正在等待用户允许 麦克风 权限>相机

注意:-基于此,我想确定媒体权限是否已经保存。即如果保存了权限,则不会出现弹出窗口。

编辑

MEDIA = ( navigator.webkitGetUserMedia     ||
          navigator.mozGetUserMedia        ||
          navigator.msGetUserMedia         ||
          navigator.getUserMedia           );

get_user_media: function() {
  jQuery("instruction_image_id").show();

  (MEDIA.bind(navigator))(
    {audio: true, video: false},
    media_success(),
    media_error()
  );
}

media_success: function() {
  jQuery("instruction_image_id").hide();
}

编辑

注意:-我需要一个跨浏览器解决方案。 THIS(标记为重复)线程的解决方案仅适用于 Chrome。

【问题讨论】:

  • Based on this, I want to determine if media permission was already saved 你为什么需要那个?
  • @A.Wolff 因为我想显示一个图像,该图像具有要求用户单击 Allow 的视觉指令,并且该图像隐藏在 的成功块中获取用户媒体。如果保存了权限,则此图像会波动。
  • 因此您可以使用您在用户第一次允许时设置的任何类型的持久数据客户端(localStorage)。然后检查它。但你问的其实可能是XY问题,不确定
  • 我尝试使用localStorage,但用户总是可以选择从浏览器设置中撤销权限,然后我不知道如何重置localStorage

标签: javascript jquery


【解决方案1】:

这里可以查看等待的时间,查看权限的开始和结束:

// Start the permission.
navigator.getUserMedia (
  // constraints
  {
    video: true,
    audio: true
  },

  // successCallback
  function(localMediaStream) {
    // End the permission
    var video = document.querySelector('video');
    video.src = window.URL.createObjectURL(localMediaStream);
    video.onloadedmetadata = function(e) {
      // Do something with the video here.
    };
  },

  // errorCallback
  function(err) {
    if(err === PERMISSION_DENIED) {
      // Explain why you need permission and how to update the permission setting
    }
  }
);

【讨论】:

  • @Abhi 已经,是吗?我不这么认为,或者我不知道。 :(
  • 我的网站使用 HTTPS,因此可以保存后续调用的权限
  • @Abhi 是的,对于 HTTPS,它已经保存了。所以当你通过权限过程,你得到一个成功的功能,那么看起来用户已经禁用并第一次添加它。
猜你喜欢
  • 2011-10-24
  • 2022-01-17
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多