V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qq316107934
V2EX  ›  问与答

有没有什么办法在浏览器后退时,在上一个页面触发事件?

  •  
  •   qq316107934 · 2016-04-15 12:23:19 +08:00 · 2421 次点击
    这是一个创建于 3141 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现有一个 a.html ,在此页面点击某个链接进入 b.html 后,再点击浏览器后退回 a.html ,在这个过程中有没有什么办法能在 a.html 触发一个事件告诉 a.html 他是被某个链接后退回来的。
    最笨的办法就是监视 setInterval 监视 history 的 length 然后存到 sessionStorage 每次做判断,发生改变就代表是进入过别的页面了,但是好不靠谱啊,谷歌百度了一圈无果,大家有没有有什么靠谱的方法,谢谢。

    15 条回复    2016-04-15 19:33:21 +08:00
    v1024
        1
    v1024  
       2016-04-15 12:36:47 +08:00
    document.referrer
    qq316107934
        2
    qq316107934  
    OP
       2016-04-15 12:43:35 +08:00
    @v1024 试过, document.referrer 在后退事件中不会被更新。
    audi
        3
    audi  
       2016-04-15 12:44:12 +08:00 via iPhone
    为什么会有这个需求
    learnshare
        4
    learnshare  
       2016-04-15 12:54:54 +08:00
    如果页面都是你自己的,可以尝试
    https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_pushState()_method 不刷新页面,只修改 URL ,通过其他方式来控制 a/b 的显示
    qq316107934
        5
    qq316107934  
    OP
       2016-04-15 13:20:21 +08:00
    @audi 同学的博客,从主界面跳转到博客(WP)界面再后退时显示会有 bug 。
    qq316107934
        6
    qq316107934  
    OP
       2016-04-15 13:21:48 +08:00
    @learnshare 用 pushState 的话全部跳转代码要由 js 来接管,成本代价太高了。
    learnshare
        7
    learnshare  
       2016-04-15 13:28:40 +08:00
    @qq316107934 应该去解决遇到的那个 Bug ,而不是用更复杂的逻辑创造更多问题
    audi
        8
    audi  
       2016-04-15 13:50:53 +08:00 via iPhone
    @qq316107934 这个解决思路很奇葩呢。为什么不是解决根本问题...
    popok
        9
    popok  
       2016-04-15 14:13:02 +08:00   ❤️ 1
    我怀疑现在类似 chrome 的浏览器用鼠标手势后退,不会触发什么事件吧。因为后退都是瞬间就完成了,好像是本地缓存那种
    cxbig
        10
    cxbig  
       2016-04-15 14:19:31 +08:00
    当然是解决 Bug ,抓准了 referrer 又有何用?
    jugelizi
        11
    jugelizi  
       2016-04-15 14:30:39 +08:00
    window.onbeforeunload

    跟踪下呗

    不过这和 bug 有什么关系?
    wdhwg001
        12
    wdhwg001  
       2016-04-15 15:00:45 +08:00 via iPhone
    起初我还以为是什么支付相关的需求…
    qq316107934
        13
    qq316107934  
    OP
       2016-04-15 19:28:12 +08:00 via Android
    @popok 看来确实是不会有什么事件了.
    qq316107934
        14
    qq316107934  
    OP
       2016-04-15 19:30:58 +08:00 via Android
    @audi @learnshare @cxbig @wdhwg001 决定从根本上解决问题了,其实就是一个动画,点击导航栏链接后会将导航栏动态隐藏,但是后退不会恢复...
    qq316107934
        15
    qq316107934  
    OP
       2016-04-15 19:33:21 +08:00 via Android
    @jugelizi 试过了这个事件也不会被触发...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5278 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 101ms · UTC 09:20 · PVG 17:20 · LAX 01:20 · JFK 04:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.