将URL添加到浏览器后退按钮

时间:2016-03-17 21:28:22

标签: javascript jquery

我正在尝试在浏览器后退按钮上设置URL。我看了几个例子,发现了这个代码并且它有效。问题是,当我点击一个锚点按钮时,它与我点击浏览器后退按钮时的效果相同..这不太好。我认为问题在于这行代码 - 我可能错了 -

window.addEventListener('popstate', function(event){ ... })

这是代码 -

history.pushState(null, null, '<?php echo $_SERVER["REQUEST_URI"]; ?>');
window.addEventListener('popstate', function(event) {
        window.location.assign("http://newurl.com");
});

我一整天都在努力,找不到解决方案。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

已经给出了这个答案,但我将尝试使用pushState解释我的理解。

请注意您的网址是&#34; google.com/gmail&#34;

  1. 将currentURL设为临时URL,以便您的浏览器显示此网址。在此步骤中,堆栈中将有一个URL,即google.com/gmail#!/tempURL

    history.replaceState(null, document.title, location.pathname+"#!/tempURL");

  2. 将上一个URL推送到新状态,现在您的浏览器将显示previousURL,即google.com/gmail

    history.pushState(null, document.title, location.pathname);

    堆栈的当前状态:

    1. 第一个元素:google.com/gmail
    2. 最后一个元素:google.com/gmail#!/tempURL
  3. 现在将监听器添加到监听事件

    window.addEventListener("popstate", function() {
        if(location.hash === "#!/tempURL") {
            history.replaceState(null, document.title, location.pathname);
            //replaces first element of last element of stack with google.com/gmail so can be used further
            setTimeout(function(){
                location.replace("http://www.yahoo.com/");
            },0);
        }
    }, false);
    
  4. How to change url and detect the back button