初次拒绝后在 JS 中重新提示相机权限

RIS*_*AIN 5 javascript mozilla google-chrome browser-cache webcam.js

如果用户第一次拒绝,我想重新提示相机许可。

代码:

navigator.mediaDevices.getUserMedia({video: true, audio: false}).then(function(){
      document.getElementById("submitbutton").style.display="inline"; 
  }).catch(function(err){alert("Please provide consent.");location.reload();});
Run Code Online (Sandbox Code Playgroud)

上面的代码在我第一次拒绝权限后重新加载页面。但重新加载后,它不会提示许可,而是再次进入 .catch 块

我相信发生这种情况是因为浏览器第一次存储被拒绝的承诺,并在页面重新加载时检查相同的承诺。

有什么办法可以强制再次出现权限提示吗?

Jam*_* K. 0

不,你不能。

这是浏览器设计者经过深思熟虑的决定,目的是防止网站对其(潜在的侵入性)权限请求感到恼火。一旦用户拒绝了权限请求,他们就必须深入研究浏览器设置以重新允许来自该域的请求。在这里阅读更多内容。

不过,现在流行的一个技巧是,在用户完成一些表明他们确实想要指定功能的操作后才请求许可。

因此,例如,您可能希望您的用户流程如下所示:

If you're going to invade the user's privacy, it will go best for you if you explain why you're doing it.