Chrome 76更新后,如何避免在隐身模式下询问通知权限?几秒钟后通知被拒绝?

时间:2019-09-06 10:10:58

标签: javascript google-chrome push-notification incognito-mode

我有一个用例,其中显示带有一些辅助文本的黑色覆盖,以允许或拒绝Web推送通知。

this.showOverlay();
Notification.requestPermission().then((permission) => {
   ...
   this.hideOverlay();
   ...
})

之前,我没有以隐身模式执行此代码。但是现在,由于Google已关闭所有漏洞以检测隐身模式,因此我得到了一个叠加层几秒钟,然后该叠加层自动消失了。
实际上,在隐身模式下,Chrome浏览器不会等待用户允许或拒绝它,而是会自行拒绝它,但是会延迟一秒钟。

所以问题是:
1.我可以停止以隐身模式请求权限吗? (似乎不可能) 2. Chrome是否有固定的持续时间,之后Chrome会拒绝该权限?

在隐身模式下请求“通知”权限时,任何显示重叠的网站都可以看到此问题。例如https://www.facebook.com

1 个答案:

答案 0 :(得分:1)

不幸的是,使它起作用的唯一方法是在请求权限之前使用自定义弹出窗口取消。或执行一些需要获得许可的时间,如果在几秒钟内仍无法解决承诺,则显示自定义弹出窗口。

浏览器不希望让您知道自己处于隐身状态,因此确实存在问题。这是一个问题,例如我们想向用户解释我们将向他发送哪些通知。由于许多站点提供新闻通知和一些毫无价值的更新,因此许多用户在看到权限弹出窗口后便立即单击“阻止”。 ...并且不会在我们的网站上收到有关传入消息或任何其他重要信息的通知。在这种情况下,自定义弹出窗口延迟不会有多大帮助,但它主要取决于用户。因此在某些有限的情况下可能是一种解决方案。

在持续时间上,我没有发现任何区别:它不能立即解决承诺,但是会花费时间,就像用户拒绝了一样。它还可能受到用户设备性能等不同原因的影响。