Javascript服务工作者 - 如何在浏览器关闭时触发事件

时间:2017-06-28 18:55:51

标签: javascript google-chrome push-notification service-worker

我目前正在尝试使用服务工作者,尤其是chrome中的推送通知。问题只是我不知道如何启动它。

下列的程序: 在我的index.html中,我首先请求通知权限。如果授予权限,我会注册我的服务工作者。当服务工作者准备就绪时,我使用promise来获取解析函数,并将注册作为第一个参数。然后我将展示通知

这里是代码:

<script>
navigator.serviceWorker.register('sw.js');
Notification.requestPermission(function(result) {
    if (result === 'granted') {
        navigator.serviceWorker.ready.then(function(registration) {
            registration.showNotification('Notification with ServiceWorker', {
                "body": "Test",
                "vibrate": [200, 100, 200, 100, 200, 100, 400]
            });
        });
    }
});
</script>

现在我不知道如何启动sw.js

当我注册一个活动时,我需要一些可以解雇我的活动。当我关闭浏览器时,我无法触发事件。

我的问题:我有一个JSON文件。是否可以在该文件上设置事件以及文件何时更改事件?

1 个答案:

答案 0 :(得分:0)

开始使用服务工作者,您需要在索引html中初始化它。像这样的东西

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('service-worker.js', {scope: './'}).then((registration) => {
        console.log('sw registered');
    }).catch(function(error) {
        console.log('registration failed');
    });
}

这会将service-worker.js注册为您的服务人员。 更多详情here

接下来,您必须听取push事件,例如

self.addEventListener('push', ()=>{
    // listen to push notifications here
});

出于测试目的,您可以使用chrome dev工具enter image description here

您可以点击上面图片中的“推送”链接来模拟推送通知。但是,要测试浏览器关闭时的情况,您需要设置一个工作推送通知系统,以便在浏览器关闭时将通知发送给服务工作者。