在我的应用程序中,我有一个创建HTTP承诺的按钮,并在成功的回调中刷新页面(使用window.location.reload(true)
)。但是,这会将页面的新副本添加到浏览器历史记录中,因此后退按钮不起作用,因为它只是再次加载同一页面。知道如何解决这个问题吗?
如果可能,我正试图支持ie8。
答案 0 :(得分:0)
您对问题的评论指出您的方法并非最佳。您应该拥有一个更新(已加载)视图的函数,而不是完全重新加载所有内容。
但是,如果您确实坚持使用此行为,则可以使用location.replace()
代替,并将其传递给当前网址。这基本上会重新加载页面,而不会在历史堆栈中添加副本。
答案 1 :(得分:0)
请参阅:https://docs.angularjs.org/guide/$location
有一种特殊的替换方法可用于告诉$ location服务,下次$ location服务与浏览器同步时,应替换最后一条历史记录而不是创建新的历史记录。当你想要实现重定向时,这很有用,否则会破坏后退按钮(导航后会重新定位重定向)。要在不创建新浏览器历史记录的情况下更改当前URL,您可以调用:
<services>
<service name="Webservice.Service1" behaviorConfiguration="ServiceBehavior">
<endpoint binding="basicHttpBinding" contract="Webservice.IService1"
bindingConfiguration="Binding1"/>
</service>
</services>
注意:如果您使用的是AngularJS,我建议您坚持使用框架提供给您的$ services,因为它们的行为与它们的JavaScript对应物相同,除非它们也包含在$ scope中。用于防止Angular应用程序中的任何不一致。