我正在尝试在浏览器后退按钮上设置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");
});
我一整天都在努力,找不到解决方案。有人可以帮忙吗?
答案 0 :(得分:0)
已经给出了这个答案,但我将尝试使用pushState
解释我的理解。
请注意您的网址是&#34; google.com/gmail
&#34;
将currentURL设为临时URL,以便您的浏览器显示此网址。在此步骤中,堆栈中将有一个URL,即google.com/gmail#!/tempURL
。
history.replaceState(null, document.title, location.pathname+"#!/tempURL");
将上一个URL推送到新状态,现在您的浏览器将显示previousURL,即google.com/gmail
。
history.pushState(null, document.title, location.pathname);
堆栈的当前状态:
google.com/gmail
google.com/gmail#!/tempURL
现在将监听器添加到监听事件
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);