您可以通过运行以下命令提示用户允许或拒绝来自浏览器的桌面通知:
Notification.requestPermission(callback);
但是可以通过代码删除该权限吗?我们希望用户可以选择切换通知.这可以通过JavaScript实现,还是我们需要在其他地方保存该选项?
解决方法
不,您的脚本无法以编程方式放弃显示通知的权限.除了requestPermission之外,API specification没有任何与权限相关的功能. (当然,浏览器可能有一个选项菜单,允许用户撤消域的权限,但这是一个浏览器级选项,而不是网站级选项.例如,在Chrome中,您可以看到此选项菜单单击地址栏左侧的图标.)
if(notifications_allowed) { new Notification(...); }
或者,您可以重写Notification构造函数以包含contiditional并根据需要调用原始Notification:
(function() { var oldNofitication = Notification; Notification = function() { if(notifications_allowed) { oldNotification.apply(this,arguments); } } })();
如果您使用供应商前缀的构造函数或函数(例如,webkitNotifications.createNotification),那么您还需要重写每个构造函数或函数,以条件取决于您的options变量.