6

我正在localhost使用 SSL 测试 HTML5 通知。我已经重置了该站点的 Chrome 设置(通过单击 URL 框中的锁定图标 - “站点设置”),并且仔细检查了通知设置设置为“询问(默认)”。

现在这是我的代码:

if (Notification.permission !== "granted") {
    Notification.requestPermission();
}

但是一旦代码运行,就不会显示权限弹出窗口,而是在地址栏中看到这个锁图标​​,上面写着“通知被阻止”:

在此处输入图像描述

尝试向.then()代码添加承诺 - 结果相同。使用 Chrome 版本 85.0.4183.102。他们改变了什么吗?

我确实看到博客文章提到如果用户关闭弹出窗口三次,Chrome 会自动禁用通知,但我确实重置了设置,是吗?

PS如果我刷新页面并再次请求权限 - 我在控制台中看到这个"Notifications permission has been blocked as the user has ignored the permission prompt several times."等等,如果我什至没有看到它,我怎么能忽略它?

4

1 回答 1

4

好的,所以在我用头撞墙一个小时后,我找到了原因。

在此处输入图像描述

地址栏中的那个小锁图标——是新的“通知提示”女士们先生们。

我在这里尽量保持冷静,但是... FFS Google 你是认真的吗?

PS 我们都明白这背后的意图是防止人们滥用这些弹出窗口。但更好的方法是检查代码是否在用户触发的上下文中运行(例如,响应单击),如果是,请像以前一样保留它。

于 2020-09-18T11:23:28.983 回答