隐藏以前的HTML桌面通知

时间:2012-09-18 13:32:56

标签: javascript html5 html5-notifications webkit-notifications

我目前正在使用以下代码为我的控制台生成HTML5桌面通知。

<script type="text/javascript">
$(document).ready(function() {
    $('#show_button').click(function(e) {
          e.preventDefault();
          window.webkitNotifications.requestPermission();
        }); 
    if (window.webkitNotifications.checkPermission() == 0) {
        notification = window.webkitNotifications.createNotification('favicon.ico', 'New orders!', 'You have new orders.');
        notification.show();
        setTimeout(function() {
            notification.cancel();
        }, '5000');
    }
   });
</script>

5秒后通知会再次出现和消失,但如果我在5秒钟之前点击新页面或关闭窗口,则通知不会关闭。由于页面设置为每5分钟刷新一次,因此可能会出现许多通知,然后需要手动关闭每个通知。

是否有方法可以检查Javascript是否有任何先前的通知等待并关闭它们,或者确保即使窗口关闭也会消失通知?

1 个答案:

答案 0 :(得分:1)

根据:Reliably Dismissing Webkit Notifications

  

使用window.onunload或window.onbeforeunload处理程序清除页面关闭时的通知。但是,这不会保留三秒钟的延迟,因为通知将在页面关闭时立即关闭。

     

另一个选项(保留三秒延迟)是使用createHTMLNotification(url)从HTML页面创建通知。通过在通知HTML文档中包含类似setTimeout(window.close,3000)的脚本,使通知页面自行关闭。在这种情况下,显然,您不需要在主页面中调用setTimeout,因为它已包含在通知中。

此代码有效:但是,在Chrome上,它仅在更改或关闭页面时有效,它似乎无法在刷新时工作。这是Chromium wiki中记录的错误,所以我认为这很快就会得到修复......

$(window).on('beforeunload', function() {
  notification.cancel();
});