3

現在、次のコードを使用して、コンソールの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でチェックして閉じる方法はありますか、またはウィンドウが閉じていても通知が消えることを確認する方法はありますか?

4

1 に答える 1

1

によると:Webkit通知を確実に却下する

window.onunloadまたはwindow.onbeforeunloadハンドラーを使用して、ページが閉じられたときに通知をクリアします。ただし、ページが閉じるとすぐに通知が閉じられるため、これでは3秒の遅延は保持されません。

もう1つのオプション(3秒の遅延を保持します)は、createHTMLNotification(url)を使用してHTMLページから通知を作成することです。通知HTMLドキュメント内にsetTimeout(window.close、3000)のようなスクリプトを含めて、通知ページを閉じます。この場合、明らかに、メインページでsetTimeout呼び出しは必要ありません。これは、通知にすでに含まれているためです。

このコードは機能します:ただし、Chromeでは、ページを変更または閉じるときにのみ機能し、更新では機能しないようです。これはChromiumwikiに記録されたバグなので、これはすぐに修正されると思います...

$(window).on('beforeunload', function() {
  notification.cancel();
});
于 2012-09-19T10:56:46.740 に答える