相关疑难解决方法(0)

方法:ServiceWorker检查是否准备好更新

我想要实现的目标:

  • 用loader/spinner渲染页面

  • 如果service-worker.js已注册并处于活动状态,则检查更新

    • 如果没有更新,则删除加载程序
    • 如果updatefound安装了新版本,则重新加载页面
  • 否则注册 service-worker.js
    • 什么时候updatefound,意味着新的安装,删除装载机

我正在使用sw-precache模块生成service-worker.js并遵循注册码:

window.addEventListener('load', function() {

  // show loader
  addLoader();

  navigator.serviceWorker.register('service-worker.js')
    .then(function(swRegistration) {

      // react to changes in `service-worker.js`
      swRegistration.onupdatefound = function() {
        var installingWorker = swRegistration.installing;
        installingWorker.onstatechange = function() {
          if(installingWorker.state === 'installed' && navigator.serviceWorker.controller){

            // updated content installed
            window.location.reload();
          } else if (installingWorker.state === 'installed'){

            // new sw registered and content cached
            removeLoader();
          }
        };
      }

      if(swRegistration.active){
        // here I know that …
Run Code Online (Sandbox Code Playgroud)

javascript service-worker sw-precache

16
推荐指数
1
解决办法
1525
查看次数

标签 统计

javascript ×1

service-worker ×1

sw-precache ×1