你好,我正在创建一个AngularJS应用程序。我将$locationProvider.html5Mode设置为true。现在我可以在Chrome和Firefox浏览器中得到不带#的URL。但是,当我尝试在IE 9中打开它时,页面会一直重载。
你好,我正在创建一个AngularJS应用程序。我将$locationProvider.html5Mode设置为true。现在我可以在Chrome和Firefox浏览器中得到不带#的URL。但是,当我尝试在IE 9中打开它时,页面会一直重载。
坏消息。IE9不支持HTML5 History API。这是Angular html5Mode使用的API。如果您需要在IE9上运行您的应用程序,您需要切换回以前的方式或添加代码来检测历史API是否可用,然后使用它或默认使用哈希。
function supports_history_api() {
return !!(window.history && history.pushState);
}
我知道。IE太傻了。它应该要死得很惨。
$location文档
请参阅“哈希和HTML5模式”。
基本上,当浏览器支持时,html5模式使用History API,并在不支持时回退到hashbang(#)。
如果没有History API,您不能“只是”在浏览器中删除“#”。因为当您更改URL时,浏览器会尝试强制重新加载,从而破坏流程。