Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript服务工作者-如何在浏览器关闭时触发事件_Javascript_Google Chrome_Push Notification_Service Worker - Fatal编程技术网

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

Javascript服务工作者-如何在浏览器关闭时触发事件,javascript,google-chrome,push-notification,service-worker,Javascript,Google Chrome,Push Notification,Service Worker,我目前正在试用服务人员,尤其是chrome中的推送通知。问题是我不知道如何开始 以下: 在my index.html中,我首先请求通知权限。如果授予权限,我将注册我的服务人员。当服务人员准备好后,我将使用promise获得resolve函数,并将注册作为第一个参数。然后我要给大家看通知 代码如下: <script> navigator.serviceWorker.register('sw.js'); Notification.requestPermission(function(re

我目前正在试用服务人员,尤其是chrome中的推送通知。问题是我不知道如何开始

以下: 在my index.html中,我首先请求通知权限。如果授予权限,我将注册我的服务人员。当服务人员准备好后,我将使用promise获得resolve函数,并将注册作为第一个参数。然后我要给大家看通知

代码如下:

<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>

navigator.serviceWorker.register('sw.js');
Notification.requestPermission(函数(结果){
如果(结果==‘已授予’){
navigator.serviceWorker.ready.then(函数(注册){
registration.showNotification('ServiceWorker通知'{
“正文”:“测试”,
“振动”:[200100200100200200200200100400]
});
});
}
});
现在我不知道如何启动sw.js

当我注册一个事件时,我需要一些触发我事件的东西。当我关闭浏览器时,我无法触发事件


我的问题是:我有一个JSON文件。是否可以在该文件上设置事件,当文件更改时,事件将触发?

要开始使用服务人员,您需要在索引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
为您的服务人员。 更多细节

下一步,您将必须收听
push
事件

self.addEventListener('push', ()=>{
    // listen to push notifications here
});
出于测试目的,您可以使用chrome开发工具


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

您需要实现一个具有适当的
推送事件处理程序的service worker,您需要将其注册为推送消息服务的客户端。有一些基础知识,并详细介绍了使用Firebase云消息服务作为后端的实现。