我有一个 angularJS 应用程序,配置如下:
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');
因此,在现代浏览器中,它可以与 pushstate 一起使用,示例 URL 将是:
http://myapp.com/members
在较旧的浏览器(例如 IE9)中,当我浏览到该 URL 时,它会按预期将其重写为:
http://myapp.com/members#!/members
从此时开始单击任何链接使用 hashbang 方法,也是正确的:
http://myapp.com/members#!/members/add
然而...
如果我在一个hashbang重写的url上完全重新加载一个页面,它会继续将hash附加到它自己。第一次刷新:
http://myapp.com/members#!/members#!/members#!%2Fmembers
..和第二次刷新:
http://myapp.com/members#!/members#!/members#!%2Fmembers#!/members#!%2Fmembers%23!%2Fmembers%23!%2Fmembers
这里发生了什么可能导致这种情况?通常它不会发生,因为人们会在应用程序中导航并且 angular 会处理 url,但是完全重新加载似乎会破坏它。谢谢。