diff --git a/game/entry.js b/game/entry.js index beeeb229c..85e7f50a8 100644 --- a/game/entry.js +++ b/game/entry.js @@ -62,7 +62,9 @@ boot().then(() => { const thisWindow = remote.getCurrentWindow(); thisWindow.loadURL(url); } else { - location.href = url; + setTimeout(() => { + location.href = url; + }, 1000); } } } diff --git a/game/game.js b/game/game.js index 5dc94eeb4..0ecc5ebf3 100644 --- a/game/game.js +++ b/game/game.js @@ -136,17 +136,27 @@ new Promise(resolve => { } if (location.protocol.startsWith('http') && 'serviceWorker' in navigator) { let scope = window.location.protocol + '//' + window.location.host + '/'; - navigator.serviceWorker.register(`${scope}service-worker.js`, { - updateViaCache: "all", - scope, - }).then(registration => { - navigator.serviceWorker.addEventListener('message', e => { - console.log(e); + navigator.serviceWorker.getRegistrations().then(registrations => { + let findServiceWorker = false; + for (let registration of registrations) { + if (registration && registration.active && registration.active.scriptURL == `${scope}service-worker.js`) { + findServiceWorker = true; + } + } + navigator.serviceWorker.register(`${scope}service-worker.js`, { + updateViaCache: "all", + scope, + }).then(registration => { + // 初次加载worker,需要重新启动一次 + if (!findServiceWorker) location.reload(); + navigator.serviceWorker.addEventListener('message', e => { + console.log(e); + }); + registration.update(); + // console.log(`set scope: ${scope}, service worker instance:`, registration); + }).catch(e => { + console.log('serviceWorker加载失败: ', e); }); - registration.update(); - // console.log(`set scope: ${scope}, service worker instance:`, registration); - }).catch(e => { - console.log('serviceWorker加载失败: ', e); }); } const script = document.createElement('script')