Merge pull request #930 from nonameShijian/PR-Branch

更新http协议完成后延迟重启,初次加载serviceWorker重启,使用xhr获取数据时加入状态码判断
This commit is contained in:
Spmario233 2024-02-08 13:42:48 +08:00 committed by GitHub
commit a97069f092
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 54 additions and 13 deletions

View File

@ -62,7 +62,9 @@ boot().then(() => {
const thisWindow = remote.getCurrentWindow(); const thisWindow = remote.getCurrentWindow();
thisWindow.loadURL(url); thisWindow.loadURL(url);
} else { } else {
location.href = url; setTimeout(() => {
location.href = url;
}, 1000);
} }
} }
} }

View File

@ -136,17 +136,27 @@ new Promise(resolve => {
} }
if (location.protocol.startsWith('http') && 'serviceWorker' in navigator) { if (location.protocol.startsWith('http') && 'serviceWorker' in navigator) {
let scope = window.location.protocol + '//' + window.location.host + '/'; let scope = window.location.protocol + '//' + window.location.host + '/';
navigator.serviceWorker.register(`${scope}service-worker.js`, { navigator.serviceWorker.getRegistrations().then(registrations => {
updateViaCache: "all", let findServiceWorker = false;
scope, for (let registration of registrations) {
}).then(registration => { if (registration && registration.active && registration.active.scriptURL == `${scope}service-worker.js`) {
navigator.serviceWorker.addEventListener('message', e => { findServiceWorker = true;
console.log(e); }
}
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') const script = document.createElement('script')

View File

@ -263,6 +263,11 @@ export class LibInit extends Uninstantable {
const xmlHttpRequest = new XMLHttpRequest(); const xmlHttpRequest = new XMLHttpRequest();
let data; let data;
xmlHttpRequest.addEventListener("load", () => { xmlHttpRequest.addEventListener("load", () => {
if (![0, 200].includes(xmlHttpRequest.status)) {
// @ts-ignore
if (typeof onError == 'function') onError(new Error(oReq.statusText || oReq.status));
return;
}
data = xmlHttpRequest.responseText; data = xmlHttpRequest.responseText;
if (!data) { if (!data) {
if (typeof onError == 'function') onError(new Error(`${scriptSource}加载失败!`)); if (typeof onError == 'function') onError(new Error(`${scriptSource}加载失败!`));
@ -303,7 +308,14 @@ export class LibInit extends Uninstantable {
sScriptURL = url + str; sScriptURL = url + str;
} }
const oReq = new XMLHttpRequest(); const oReq = new XMLHttpRequest();
if (typeof onload == 'function') oReq.addEventListener("load", onload); if (typeof onload == 'function') oReq.addEventListener("load", result => {
if (![0, 200].includes(oReq.status)) {
// @ts-ignore
if (typeof onerror == 'function') onerror(new Error(oReq.statusText || oReq.status));
return;
}
onload(result);
});
if (typeof onerror == 'function') oReq.addEventListener("error", onerror); if (typeof onerror == 'function') oReq.addEventListener("error", onerror);
oReq.open("GET", sScriptURL); oReq.open("GET", sScriptURL);
oReq.send(); oReq.send();
@ -330,7 +342,14 @@ export class LibInit extends Uninstantable {
sScriptURL = url + str; sScriptURL = url + str;
} }
const oReq = new XMLHttpRequest(); const oReq = new XMLHttpRequest();
if (typeof onload == 'function') oReq.addEventListener("load", onload); if (typeof onload == 'function') oReq.addEventListener("load", result => {
if (![0, 200].includes(oReq.status)) {
// @ts-ignore
if (typeof onerror == 'function') onerror(new Error(oReq.statusText || oReq.status));
return;
}
onload(result);
});
if (typeof onerror == 'function') oReq.addEventListener("error", onerror); if (typeof onerror == 'function') oReq.addEventListener("error", onerror);
oReq.open("GET", sScriptURL, false); oReq.open("GET", sScriptURL, false);
oReq.send(); oReq.send();
@ -340,6 +359,11 @@ export class LibInit extends Uninstantable {
static json(url, onload, onerror) { static json(url, onload, onerror) {
const oReq = new XMLHttpRequest(); const oReq = new XMLHttpRequest();
if (typeof onload == 'function') oReq.addEventListener("load", () => { if (typeof onload == 'function') oReq.addEventListener("load", () => {
if (![0, 200].includes(oReq.status)) {
// @ts-ignore
if (typeof onerror == 'function') onerror(new Error(oReq.statusText || oReq.status));
return;
}
let result; let result;
try { try {
result = JSON.parse(oReq.responseText); result = JSON.parse(oReq.responseText);
@ -368,6 +392,11 @@ export class LibInit extends Uninstantable {
} }
const oReq = new XMLHttpRequest(); const oReq = new XMLHttpRequest();
if (typeof onload == 'function') oReq.addEventListener("load", () => { if (typeof onload == 'function') oReq.addEventListener("load", () => {
if (![0, 200].includes(oReq.status)) {
// @ts-ignore
if (typeof onerror == 'function') onerror(new Error(oReq.statusText || oReq.status));
return;
}
let result; let result;
try { try {
result = JSON.parse(oReq.responseText); result = JSON.parse(oReq.responseText);