我的单页应用程序未安装在根目录上,因此应用程序的路径类似于http://…/sub/
. 我通过将其添加到 HTML 文件来处理基础:
<base href="/sub/"/>
我的 routingProvider 是按照您期望的方式设置的:
$locationProvider.html5Mode(true).hashPrefix('!');
$routeProvider
.when("/", { })
.when("/foo/", { })
.when("/bar/", { })
这在 Chrome、Safari、Firefox 和 IE9 中很好,但在 IE8 上却失败了。为了使它工作,我必须添加它以确保它正确初始化:
if (!history.pushState && !window.location.hash) {
window.location.replace("/sub/#!/");
}
为什么需要这样做?有没有另一种方法让它在 IE8 中工作而不诉诸这些黑客?(我在角度 1.2.0.rc.3 上)