Javascript 了解服务人员注册
我正在阅读服务人员入门文档 因此,首先我们在范围中注册我们的ServiceWorker。所以我就这样做了Javascript 了解服务人员注册,javascript,service-worker,Javascript,Service Worker,我正在阅读服务人员入门文档 因此,首先我们在范围中注册我们的ServiceWorker。所以我就这样做了 <!DOCTYPE html> <html> <head> <title>Getting started with Service Worker</title> </head> <body> <script type="text/javascript"> if ('serviceWor
<!DOCTYPE html>
<html>
<head>
<title>Getting started with Service Worker</title>
</head>
<body>
<script type="text/javascript">
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/sw.js').then(function(registration) {
// Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}, function(err) {
// registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
});
}
</script>
</body>
</html>
因此,当我第一次访问index.html文件时,将执行console.log并打印ServiceWorker注册成功消息。但是当我第二次刷新页面时,它只打印消息ServiceWorker registration successful。那么为什么它没有第二次在sw.js中执行console.log呢。我希望它第二次执行console.log。我错过了这里的要点吗?服务工作者是在注册时基本上执行一次(在后台)的脚本。如果需要执行一些循环代码,则需要使用: 服务工作者是根据源和路径注册的事件驱动工作者
在调用
navigator.serviceworner.register('/sw.js')
之后,将异步调用安装事件;这就是它返回一个的原因,您可以向它传递一个回调
函数(带有内容console.log('ServiceWorker registration successful…');
)。服务人员被设计成坐在您的网站和网络之间。因此,当您最初加载页面时,如果您添加了一个事件来侦听安装,它会运行一次脚本并安装服务工作者
完成后,您需要将侦听器附加到“fetch”事件,以捕获页面中的所有请求。
因此,如果您希望在每次发出请求时都使用console.log,基本上可以执行以下操作:
self.addEventListener('fetch', event => {
console.log(event);
})
那么,安装事件实际上是什么时候触发的呢?我知道我们正在捕获页面和其他资源,但是这个安装事件实际上是什么时候触发的。所以,一旦服务工作者注册,安装事件只触发一次,对吗@Wikitit这个MDN链接回答了我的问题@MahtabAlam我很高兴听到这个消息。只是FWIW,有时候人们会感到困惑和一般用途的困惑。你确定你的工作需要一名服务人员吗?服务工作者是一种特殊的web工作者,用于管理页面资源(例如,脱机应用程序)。
self.addEventListener('fetch', event => {
console.log(event);
})