AngularJS + html5Mode +自定义回退

时间:2012-12-02 03:09:33

标签: angularjs

我有 html5Mode = true 的应用程序,但在IE上我不需要回退到#/ url 。我需要的是保留URL并重新加载完整的页面。

如果我找不到任何方法,我将需要编辑AngularJS文件,这就是我不想要的。

建议?

谢谢!

- 编辑 -

作为时间解决方案,我在AngularJS文件中评论了一些代码。

/*if ($sniffer.history) {*/
    $location = new LocationUrl(
      convertToHtml5Url(initUrl, basePath, hashPrefix),
      pathPrefix, appBaseUrl);
  /*} else {
    $location = new LocationHashbangInHtml5Url(
      convertToHashbangUrl(initUrl, basePath, hashPrefix),
      hashPrefix, appBaseUrl, basePath.substr(pathPrefix.length + 1));
  }*/

现在它不会回退到Hashtag网址,如果浏览器不支持历史记录API,则Browser.url会生成 location.href

1 个答案:

答案 0 :(得分:0)

我认为这可以满足您的需求。如果没有,也许解决方案涉及相同的事件$locationChangeStart

  var gate = 1;
  $scope.$on("$locationChangeStart", function(event, nextLocation, currentLocation) {
    if ($('html').is('.ie6, .ie7, .ie8')) {
      if (gate === 0) { //prevent endless location change
        gate = 1;
        window.location.href = nextLocation; //reload the page
      }
      else {
        gate = 0;
      }
    }
  });

如果您不知道此OldIE支票,see this post.