IE 9不支持$locationProvider.html5Mode

6

你好,我正在创建一个AngularJS应用程序。我将$locationProvider.html5Mode设置为true。现在我可以在Chrome和Firefox浏览器中得到不带#的URL。但是,当我尝试在IE 9中打开它时,页面会一直重载。


可能是重复的问题:AngularJS如何通过路由在IE9中删除#符号 - bookthief
请查看此链接:https://dev59.com/2XTYa4cB1Zd3GeqPzNTs - bookthief
2个回答

11

坏消息。IE9不支持HTML5 History API。这是Angular html5Mode使用的API。如果您需要在IE9上运行您的应用程序,您需要切换回以前的方式或添加代码来检测历史API是否可用,然后使用它或默认使用哈希。

function supports_history_api() {
  return !!(window.history && history.pushState);
}

我知道。IE太傻了。它应该要死得很惨。


嗨,现在通过加入这个条件,它可以在IE9上运行。但是这个条件在Android浏览器中返回true并存在旧问题。 - Sarath Pv
安卓的版本是什么? - Jorge Enrique Reyes Salas
我的版本是Android 2.3。 - Sarath Pv

3

$location文档

请参阅“哈希和HTML5模式”。

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

如果没有History API,您不能“只是”在浏览器中删除“#”。因为当您更改URL时,浏览器会尝试强制重新加载,从而破坏流程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接