Javascript 浏览器后退按钮不支持';更改window.location.href后无法正常工作

Javascript 浏览器后退按钮不支持';更改window.location.href后无法正常工作,javascript,jquery,html,angularjs,angular-ui-router,Javascript,Jquery,Html,Angularjs,Angular Ui Router,之前,我的应用程序是用jQuery编写的,不是SPA。我已经将一些页面改写为AngularJS,并将其制作成SPA 现在我需要与这些应用程序进行适当的通信因为当我从一个角度页面转到另一个角度页面时,我不想重新加载页面,但当我转到jQuery页面时,我确实想重新加载页面,以便服务器可以向我发送其他源文件。 因此,当链接转到角度页面(从角度页面)时,很简单: <a href="store/categories"> 成功了!当你现在点击链接时,它将用正确的URL重新加载页面 但是,如果您

之前,我的应用程序是用jQuery编写的,不是SPA。我已经将一些页面改写为AngularJS,并将其制作成SPA

现在我需要与这些应用程序进行适当的通信因为当我从一个角度页面转到另一个角度页面时,我不想重新加载页面,但当我转到jQuery页面时,我确实想重新加载页面,以便服务器可以向我发送其他源文件。
因此,当链接转到角度页面(从角度页面)时,很简单:

<a href="store/categories">
成功了!当你现在点击链接时,它将用正确的URL重新加载页面

但是,如果您使用
window.location.href
转到某个页面,然后单击浏览器后退按钮,则URL将更改,但页面将不会重新加载


我如何修复它?

使用
target=“\u self”
而不是
window.location.href

在两个应用之间来回切换时,我遇到了完全相同的问题

由于旧应用程序没有使用HTML5历史API功能,我通过在旧网站页面中添加这段javascript(在旧网站中所有页面加载的javascript文件中:

//This will fix a bug with browsers history back API after a window.location from within our Angular apps.
(function () {
  var locationOnPageload = location.href;
  window.onpopstate = function (event) {
    if (location.href !== locationOnPageload) {
      document.location.reload();
    }
  }
})();
当Safari on mobile在页面加载时触发“onpopstate”时,我添加了检查页面加载时的href是否与位置onpopstate不同


通过这种方式,我不必将target=“\u self”添加到所有返回到旧式页面的链接中。

谢谢,它的工作方式很有魅力,比与用户界面对抗要简单得多!
//This will fix a bug with browsers history back API after a window.location from within our Angular apps.
(function () {
  var locationOnPageload = location.href;
  window.onpopstate = function (event) {
    if (location.href !== locationOnPageload) {
      document.location.reload();
    }
  }
})();