8

我无法删除 IE9 中的 # 符号。我搜索了答案,但没有找到解决方法。

这总是重定向到

http://myhost.com:8080/#/website/

并显示此描述:

The requested resource is not available.

locationprovider.html5mode(true)不管用。相同的路线在 FireFox 中运行并显示

http://myhost.com:8080/website/

我该如何纠正这个问题?

4

4 回答 4

6

$location 文档

请参阅“Hashbang 和 HTML5 模式”

基本上,html5 模式History API在浏览器支持时使用,在不支持时回退到 hashbang( #)。

您不能在没有 History API 的浏览器中“仅”删除“#”。因为当您更改 url 时,浏览器会尝试强制重新加载,从而中断流程。

于 2013-07-24T10:23:26.627 回答
6

IE9 不支持 html5 history api,这就是为什么它在 url 后面加上 #,删除 # 不会解决你的问题

于 2013-07-24T10:16:42.327 回答
2

事实上我们无法移除它,但我们可以让它顺利运行

RouterModule.forRoot(ROUTES, { useHash: Boolean(history.pushState) === false });
于 2017-01-04T07:10:41.057 回答
0

使用 window.location.hash = '/' 解决了我的问题。

if (window.history && window.history.pushState) {
  $locationProvider.html5Mode(true);
}
else {
        window.location.hash = '/'  // IE 9 FIX            
        $locationProvider.html5Mode(true);
}

于 2015-03-16T15:27:46.817 回答