【问题标题】:denying browser notification permissions拒绝浏览器通知权限
【发布时间】:2017-04-18 21:31:55
【问题描述】:
According to the spec,您可以提示浏览器允许用户授予或拒绝浏览器通知。一旦用户授予权限,是否也有办法以编程方式拒绝该权限?
在他们授予权限后调用window.Notification.requestPermission() 除了运行成功承诺之外没有任何作用。
我的目标是在我的网站的用户设置部分有一个开/关按钮切换。据我所知,一旦打开就无法关闭。
【问题讨论】:
标签:
browser
notifications
【解决方案1】:
很遗憾,目前我认为这是不可能的。
未来我们应该能够使用Permissions API 来检查和撤销通知(以及其他API,如地理定位等)。
但是,虽然我们目前可以查询权限的状态,但不支持 revoke 方法。我相信直到最近在 Firefox 中才有可能,但在 51 中,该功能已更改为默认关闭。
根据MDN:
从 Firefox 开始,revoke() 函数已默认禁用
51,因为它的设计在网络上受到质疑
应用程序安全工作组。可以通过设置重新启用
偏好 dom.permissions.revoke.enable 为 true。
权限 API 示例:
navigator.permissions.query({name:'notifications'}).then(function(result) {
console.log(result);
});
结果是提示/拒绝/授予。将“查询”更改为“撤销”以拒绝权限。
navigator.permissions.revoke({name:'notifications'});
另外,几年前的this answer 提出了一种您可能会感兴趣的替代方法 - 使用 localStorage 来近似此功能。