网址存在于浏览器历史记录中,但后退按钮无效?

时间:2015-12-25 01:53:53

标签: javascript back browser-history

这可能是一个非常棒的问题,但我无法在SO上找到解决它的任何问题。我在逻辑中有一个与此类似的JS代码段:

var return_data = hr.responseText;
if(return_data.indexOf('Are you sure') > -1){
  // if return_data contains the text "Are you sure," redirect to a new page
  var newurl = '/a-s/#/dictionary/' + conjugateterm;
  window.location.assign(newurl);
}
else {
  // if return_data contains the text "Are you sure," show returned_data as usual...
}

此功能正常,但它似乎劫持了浏览器的后退按钮!我知道JavaScript的location.assign()方法不会删除浏览器历史记录,这应该意味着后退按钮正常运行,但事实并非如此。奇怪的是,我可以按预期在浏览器历史记录中看到最后访问过的页面,但单击后退按钮只是刷新当前页面而不是返回到历史记录中显示的最后一页。这是location.assign()的已知行为吗?如果是这样,有没有办法纠正这种情况?

1 个答案:

答案 0 :(得分:0)

您的问题可能是在您的网址中使用#,这会引入fragment identifier

事实上,/test/page#test1/test/page#test2被视为相同的资源,仅指向您网页中的不同位置。通常,这些片段标识符甚至不会发送到网络服务器。