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

2016-04-15 12:23:19 +08:00
 qq316107934

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

2425 次点击
所在节点    问与答
15 条回复
v1024
2016-04-15 12:36:47 +08:00
document.referrer
qq316107934
2016-04-15 12:43:35 +08:00
@v1024 试过, document.referrer 在后退事件中不会被更新。
audi
2016-04-15 12:44:12 +08:00
为什么会有这个需求
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
2016-04-15 13:20:21 +08:00
@audi 同学的博客,从主界面跳转到博客(WP)界面再后退时显示会有 bug 。
qq316107934
2016-04-15 13:21:48 +08:00
@learnshare 用 pushState 的话全部跳转代码要由 js 来接管,成本代价太高了。
learnshare
2016-04-15 13:28:40 +08:00
@qq316107934 应该去解决遇到的那个 Bug ,而不是用更复杂的逻辑创造更多问题
audi
2016-04-15 13:50:53 +08:00
@qq316107934 这个解决思路很奇葩呢。为什么不是解决根本问题...
popok
2016-04-15 14:13:02 +08:00
我怀疑现在类似 chrome 的浏览器用鼠标手势后退,不会触发什么事件吧。因为后退都是瞬间就完成了,好像是本地缓存那种
cxbig
2016-04-15 14:19:31 +08:00
当然是解决 Bug ,抓准了 referrer 又有何用?
jugelizi
2016-04-15 14:30:39 +08:00
window.onbeforeunload

跟踪下呗

不过这和 bug 有什么关系?
wdhwg001
2016-04-15 15:00:45 +08:00
起初我还以为是什么支付相关的需求…
qq316107934
2016-04-15 19:28:12 +08:00
@popok 看来确实是不会有什么事件了.
qq316107934
2016-04-15 19:30:58 +08:00
@audi @learnshare @cxbig @wdhwg001 决定从根本上解决问题了,其实就是一个动画,点击导航栏链接后会将导航栏动态隐藏,但是后退不会恢复...
qq316107934
2016-04-15 19:33:21 +08:00
@jugelizi 试过了这个事件也不会被触发...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/271284

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX