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