我的需求是,清除sessionstorage,但是我是刷新时不清除,点击浏览器后退时要清除,该怎么监听浏览器后退事件?
补充,不用管sessionstorage,我就是要有一个操作,在浏览器刷新时不执行,后退关闭时执行,所以应该怎么办?是需要监听吧,onbeforeunload这样的都是刷新后退是一样的操作。。。。
没有找到正确答案来区分浏览器的刷新和后退,使用了别的方法,在进入页面的时候直接清除了,这样即使使用的是浏览器的后退键,再进入的时候也会清除
当前往其他页面前用replacestate()
将当前历史记录状态改变,给window
监控popstate
事件。回退时进入到当前页面会触发popstate
事件,就可以操作清除了
window.onbeforeunload = function(){
sessionStorage.clear();
}
后退
var detectBack = {
initialize: function() {
//监听hashchange事件
window.addEventListener('hashchange', function() {
//为当前导航页附加一个tag
this.history.replaceState('hasHash', '', '');
}, false);
window.addEventListener('popstate', function(e) {
if (e.state) {
//侦测是用户触发的后退操作, dosomething
//这里刷新当前url
this.location.reload();
}
}, false);
}
}
detectBack.initialize();
https://github.com/luokuning/blogs/issues/3
进入页面时在location上追加一个自定义的 hash,相当于增加了一个历史纪录,这样当发生hashchange 事件时可以根据有没有hash来判断是不是后退了,再做相应处理就可以了。刷新时 hash 是存在的就不用追加了。