| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | let lastSrc // 上次获取的script地址const scriptReg = /<script.*src=["'](?<src>[^"']+)/gm/** * 获取页面中的script * */async function extractNewScripts (url) {  const html = await fetch('/?_timestamp' + Date.now()).then((resp) => resp.text())  scriptReg.lastIndex = 0  const scripts = []  let match  while ((match = scriptReg.exec(html))) {    scripts.push(match.groups.src)  }  return scripts}/** * 检测是否需要更新 */async function needUpdate () {  const scripts = await extractNewScripts()  if (!lastSrc) {    lastSrc = scripts    return false  }  let result = false  if (lastSrc.length !== scripts.length) {    result = true  }  for (let i = 0; i < lastSrc.length; i++) {    if (scripts[i] !== lastSrc[i]) {      result = true      break    }  }  lastSrc = scripts  return result}const DURATION = 3000export default function autoRefresh () {  setTimeout(async () => {    const willUpdate = await needUpdate()    if (willUpdate) {      const result = confirm('检测到有版本更新,是否刷新页面?')      if (result) {        location.reload()      }    }    autoRefresh()  }, DURATION)}
 |