AngularJS如何使用route删除IE9中的#符号

时间:2013-07-24 09:23:47

标签: angularjs internet-explorer-9 routes using

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

这总是重定向到

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

并显示此描述:

The requested resource is not available.

locationprovider.html5mode(true)无效。 相同的路线在FireFox中工作并显示

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

我该如何纠正这个?

4 个答案:

答案 0 :(得分:6)

IE9没有html5历史api支持,这就是为什么它将#添加到网址,删除#将无法解决您的问题

答案 1 :(得分:6)

$location Documentation

请参阅“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);
}