add autoupdate
parent
9a302d3b36
commit
4ba37b3cfe
@ -0,0 +1,60 @@
|
||||
import {ElMessage, ElMessageBox} from 'element-plus'
|
||||
|
||||
let lastSrcs;
|
||||
|
||||
const scriptReg = /\<script.*src=["'](?<src>[^"']+)/gm;
|
||||
|
||||
// 获取最新的 script src
|
||||
async function extractNewScripts() {
|
||||
const html = await fetch("/?_timestamp=" + Date.now()).then((res) =>
|
||||
res.text()
|
||||
);
|
||||
scriptReg.lastIndex = 0;
|
||||
let result = [];
|
||||
let match;
|
||||
while ((match = scriptReg.exec(html))) {
|
||||
result.push(match.groups.src);
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// 判断是否需要更新
|
||||
async function needUpdate() {
|
||||
const newScripts = await extractNewScripts();
|
||||
if (!lastSrcs) {
|
||||
lastSrcs = newScripts;
|
||||
return false;
|
||||
}
|
||||
let result = false;
|
||||
if (newScripts.length !== lastSrcs.length) {
|
||||
result = true;
|
||||
} else {
|
||||
for (let i = 0; i < newScripts.length; i++) {
|
||||
if (newScripts[i] !== lastSrcs[i]) {
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
lastSrcs = newScripts;
|
||||
return result;
|
||||
}
|
||||
// 间隔五分钟
|
||||
const DURATION = 100 * 6 * 5;
|
||||
function autoRefresh() {
|
||||
setTimeout(async () => {
|
||||
const willUpdate = await needUpdate();
|
||||
if (willUpdate) {
|
||||
ElMessageBox.confirm('点击确定刷新页面,取消则继续使用旧版本', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
|
||||
})
|
||||
}
|
||||
autoRefresh();
|
||||
}, DURATION);
|
||||
}
|
||||
|
||||
autoRefresh();
|
Loading…
Reference in New Issue