Notification.requestPermissions - 未显示对话框,"automatically blocked" 消息在 Chrome 中
Notification.requestPermissions - no dialog shown, "automatically blocked" message in Chrome
我正在使用 SSL 在 localhost
上测试 HTML5 通知。我已经重置了站点的 Chrome 设置(通过单击 URL 框中的锁定图标 - “站点设置”),并且仔细检查通知设置设置为“询问(默认)”。
现在这是我的代码:
if (Notification.permission !== "granted") {
Notification.requestPermission();
}
但是一旦代码为 运行, 不会显示任何权限弹出窗口,而是我在地址栏中看到这个锁图标,上面写着“通知被阻止”:
尝试向代码添加 .then()
承诺 - 结果相同。使用 Chrome 版本 85.0.4183.102。他们改变了什么吗?
我确实看到博客文章提到 Chrome 会在用户关闭弹出窗口三次时自动禁用通知,但我确实重置了设置,对吗?
P.S。如果我刷新页面并再次请求权限 - 我在控制台中看到了这个 "Notifications permission has been blocked as the user has ignored the permission prompt several times."
等等,如果我没有看到提示,我怎么能忽略它?
好的,所以在用头撞墙一个小时后,我找到了原因。
地址栏中的那个小锁图标 - 是新的“通知提示”女士们先生们。
我想在这里保持冷静,但是... FFS Google你是认真的吗?
P.S。我们都明白这背后的意图是防止人们滥用这些弹出窗口。但更好的方法是检查代码是否在 user-triggered 上下文中运行(例如响应点击),如果是这样 - 像以前一样保留它。
我正在使用 SSL 在 localhost
上测试 HTML5 通知。我已经重置了站点的 Chrome 设置(通过单击 URL 框中的锁定图标 - “站点设置”),并且仔细检查通知设置设置为“询问(默认)”。
现在这是我的代码:
if (Notification.permission !== "granted") {
Notification.requestPermission();
}
但是一旦代码为 运行, 不会显示任何权限弹出窗口,而是我在地址栏中看到这个锁图标,上面写着“通知被阻止”:
尝试向代码添加 .then()
承诺 - 结果相同。使用 Chrome 版本 85.0.4183.102。他们改变了什么吗?
我确实看到博客文章提到 Chrome 会在用户关闭弹出窗口三次时自动禁用通知,但我确实重置了设置,对吗?
P.S。如果我刷新页面并再次请求权限 - 我在控制台中看到了这个 "Notifications permission has been blocked as the user has ignored the permission prompt several times."
等等,如果我没有看到提示,我怎么能忽略它?
好的,所以在用头撞墙一个小时后,我找到了原因。
地址栏中的那个小锁图标 - 是新的“通知提示”女士们先生们。
我想在这里保持冷静,但是... FFS Google你是认真的吗?
P.S。我们都明白这背后的意图是防止人们滥用这些弹出窗口。但更好的方法是检查代码是否在 user-triggered 上下文中运行(例如响应点击),如果是这样 - 像以前一样保留它。