在Chrome中使用通知API 时,我遇到了一个奇怪的错误。我有一个页面从Cookie加载一些通知,并使用Notifications API在页面加载时显示它们。如果我然后使用超链接转到第二页然后开始更改URL地址,那么即使在输入之前我到达第一页的地址,我也会再次弹出通知。我认为这与Chrome如何进行聪明的预取有关。无论如何我可以阻止这个吗?
这是我目前的代码:
var desktop_notification_options = {
body: text.text(),
icon: this.settings.icon,
tag: text.text()
};
var desktop_notification = new Notification('', desktop_notification_options);
setTimeout(desktop_notification.close.bind(desktop_notification),
this.settings.desktop_notification_timeout);
我已经意识到,如果我在该页面上添加alert('')
,则会停止(大概是因为Chrome&#39的预取无法跳过警报),不过这样做了不合理的解决方案。
非常感谢任何帮助。
答案 0 :(得分:1)
我找到了一个快速修复。我在显示通知之前检查了document.visibilityState
,只有在设置为visible
时才显示它们。更多信息:http://www.w3.org/TR/page-visibility/#dom-document-visibilitystate