Open ssnau opened 7 years ago
执行类似如下脚本:
navigator.serviceWorker.register("/sw.js") .then(reg => console.log("SW registered!", reg)) .catch(err => console.log("Boo!", err));
要注册service worker的脚本,一定需要满足如下条件:
navigator.serviceWorker.register('path-to-sw.js')
path-to-sw.js
作用域只与path-to-sw.js的路径相关。SW 的默认作用域为基于当前文件 URL 的 ./。意思就是如果你注册的sw是//example.com/foo/bar.js,那么它默认的作用域为 //example.com/foo/。
当然,如果你想注册//example.com/foo/bar.js,你的页面的域名必须是example.com
//example.com/foo/bar.js
service worker是在后台工作的,所以一旦激活了service worker,只要在这个脚本控制范围内的页面,其发出的所有请求(当然包括页面请求本身),都会被service worker监听到。
如何加载service worker?
执行类似如下脚本:
要注册service worker的脚本,一定需要满足如下条件:
navigator.serviceWorker.register('path-to-sw.js')
的path-to-sw.js
必需与页面同域。service worker的作用域是怎么回事?
作用域只与
path-to-sw.js
的路径相关。SW 的默认作用域为基于当前文件 URL 的 ./。意思就是如果你注册的sw是//example.com/foo/bar.js,那么它默认的作用域为 //example.com/foo/。service worker的工作机制
service worker是在后台工作的,所以一旦激活了service worker,只要在这个脚本控制范围内的页面,其发出的所有请求(当然包括页面请求本身),都会被service worker监听到。