You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vanilla JS项目中,调用history.go(-1)返回上一页时如何触发函数?

解决返回上一页触发函数的问题

你当前代码存在两个核心问题:

  • window.onload = isUpdated() 是直接执行函数并将返回值(undefined)赋值给onload,正确写法应为绑定函数引用 window.onload = isUpdated
  • 浏览器返回时,页面可能从**bfcache(往返缓存)**中恢复,此时window.onload不会触发,需要用pageshow事件处理这种场景

具体实现方案

直接监听pageshow事件,它会在页面加载(包括首次加载和从缓存恢复)时触发,完全覆盖你的需求:

const isUpdated = () => {
    const profileUpdated = localStorage.getItem('profileUpdated')
    if (profileUpdated) {
        let res = JSON.parse(profileUpdated)
        localStorage.removeItem('profileUpdated');
        alertBanner.innerText = res.message;
        alertBanner.parentElement.classList = 'alert green-alert';
    }
}

// 绑定pageshow事件,覆盖首次加载和浏览器返回场景
window.addEventListener('pageshow', isUpdated);

// 若需兼容旧场景,可保留onload(可选,pageshow已包含首次加载逻辑)
// window.onload = isUpdated;

补充说明

  • 在资料更新页面完成操作后,执行localStorage.setItem('profileUpdated', JSON.stringify({message: '资料更新成功'})),再调用history.back()返回上一页即可触发提示
  • 若需要区分页面是否从缓存恢复,可在函数内利用pageshow事件的persisted属性判断:
    const isUpdated = (event) => {
        if (event.persisted) {
            // 页面从缓存恢复(浏览器返回触发)
        }
        // 剩余逻辑不变
    }
    

内容的提问来源于stack exchange,提问作者abhijith v

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:55:21