Hi I am creating an angularjs app . I made $locationProvider.html5Mode as true. Now I am getting pretty url without # . It is working fine in chrome and firefox. But when I tried to open it in IE 9 , it is reloading continuously.
Asked
Active
Viewed 8,587 times
6
-
possible duplicate of [AngularJS How to remove # symbol in IE9 by using route](http://stackoverflow.com/questions/17829991/angularjs-how-to-remove-symbol-in-ie9-by-using-route) – bookthief Mar 31 '14 at 15:46
-
Have a look at this http://stackoverflow.com/questions/17829991/angularjs-how-to-remove-symbol-in-ie9-by-using-route – bookthief Mar 31 '14 at 15:46
2 Answers
11
Bad news. IE9 do not support HTML5 History API. That is what angular html5Mode uses. If you need your app to run on IE9 you need to switch back or add code to detect if History API is available the use is or default to the hash
function supports_history_api() {
return !!(window.history && history.pushState);
}
I know. Stupid IE. It should die a painful dead.

Jorge Enrique Reyes Salas
- 423
- 2
- 6
-
hi now it is working for IE9 by putting this condition. But this condition returning true in android browsers and existing the old problem. – Sarath Pv Apr 01 '14 at 05:00
-
-
3
$location Documentation
See "Hashband and HTML5 modes"
Basically, html5 mode uses History API when the browser supports it, and falls back to hashbang(#) when it is not supported.
You cannot "just" remove "#" in a browser without History API. Because when you change the url, the browser would then try to force a reload, breaking the flow.

Gilles Bodart
- 594
- 1
- 10
- 27