所以我使用的是一个web应用程序,它有一个指向我的angularjs应用程序的iframe。如果我浏览父网络应用程序,我会注意到浏览器历史记录加倍。例如,如果我导航到contacts > about us > home
,则历史记录将为:
- home
- about us
- about us
- contacts
- contacts
如果我将iframe指向没有角度的简单网页,则父应用程序历史记录正常。我在angularjs网站上遇到了一个类似问题的问题,这个问题在早期版本的角度https://github.com/angular/angular.js/issues/1054中似乎得到了解决,但似乎并没有为某些人解决。我使用的是v1.2.26。还有其他人遇到过这个问题吗?
答案 0 :(得分:0)
所以事实证明我对路由作为潜在原因的假设是正确的,我无法相信我没有早点意识到这一点。基本上我的iframe应用程序通过某种事件路由到不同的位置。每个路由虽然不影响父URL,但会在浏览器历史记录中添加一个新条目(这是正常的浏览器行为)。 iframe应用程序是在页面加载时设计的,可以运行几条路线,从而添加到浏览器历史记录中,并使每个父页面导航显示为加倍。
现在的问题是,有没有办法阻止每个路由执行添加浏览器历史记录?
<强>更新强>
$location.replace()
似乎是我能找到的唯一解决方案。该应用程序大量使用$location.path()
来触发新路线;所以我将其修改为$location.path().replace();
这将替换当前的历史记录条目,而不是添加新条目。