1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| let lastSrcs;
const scriptReg = /\<script.*src=["'](?<src>[^"']+)/gm;
async function extractNewScripts() { const html = await fetch('/?_timestamp=' + Date.now()).then((resp) => resp.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 (lastSrcs.length !== newScripts.length) { result = true; } for (let i = 0; i < lastSrcs.length; i++) { if (lastSrcs[i] !== newScripts[i]) { result = true; break; } } lastSrcs = newScripts; return result; }
const DURATION = 2000;
function autoRefresh() { setTimeout(async () => { const willUpdate = await needUpdate(); if (willUpdate) { const result = confirm('页面有更新,点击确定刷新页面'); if (result) { location.reload(); } } autoRefresh(); }, DURATION); }
autoRefresh();
|