我无法删除IE9中的#符号。我搜索了一个答案,但没有找到解决办法。
这总是重定向到
http://myhost.com:8080/#/website/
并显示此描述:
The requested resource is not available.
locationprovider.html5mode(true)
无效。
相同的路线在FireFox中工作并显示
http://myhost.com:8080/website/
我该如何纠正这个?
答案 0 :(得分:6)
IE9没有html5历史api支持,这就是为什么它将#添加到网址,删除#将无法解决您的问题
答案 1 :(得分:6)
请参阅“Hashbang和HTML5模式”
基本上,html5模式在浏览器支持时使用History API
,并在不支持时回退到hashbang(#
)。
在没有历史记录API的浏览器中,您不能“只”删除“#”。因为当您更改网址时,浏览器会尝试强制重新加载,从而打破流程。
答案 2 :(得分:2)
事实上我们无法删除它,但我们可以使它顺利运行
RouterModule.forRoot(ROUTES, { useHash: Boolean(history.pushState) === false });
答案 3 :(得分:0)
使用window.location.hash = '/'
解决了我的问题。
if (window.history && window.history.pushState) {
$locationProvider.html5Mode(true);
}
else {
window.location.hash = '/' // IE 9 FIX
$locationProvider.html5Mode(true);
}