首页 > 如何监听浏览器后退事件?

如何监听浏览器后退事件?

我的需求是,清除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 是存在的就不用追加了。

【热门文章】
【热门文章】