我有一个AngularJS应用程序,其中包含所有常见的IE解决方法:
<html id="ng-app" class="ng-app:clientsite" ng-app="clientsite" xmlns:ng="http://angularjs.org">
<head>
<!--[if lt IE 9]>
<script src="js/html5.js"></script>
<![endif]-->
<!--[if lte IE 8]>
<script>
document.createElement('ng-include');
document.createElement('ng-pluralize');
document.createElement('ng-view');
document.createElement('ng:include');
document.createElement('ng:pluralize');
document.createElement('ng:view');
</script>
<![endif]-->
<!--[if lt IE 8]>
<script src="js/json2.js"></script>
<![endif]-->
网站有效,我可以到达任何路线,除了IE7没有拿起空路线,“/”:
$routeProvider
.when("/",
{
templateUrl: "/htm/home.htm"
})
它路由到我的路线:
.otherwise(
{
templateUrl: "/htm/notfound.htm"
});
如果我在路线的末尾添加/#/,它可行,但我们的客户不会接受(人们需要能够直接访问www.theirsite.com,我们不能要求www.theirsite.com /#/).
在幕后我有一个ASP.Net MVC服务器,它只是把所有东西都路由到我的索引文件(除了IE7中的这一条路线之外,它可以全面工作)。
如何让IE7中的空路径正常工作?
答案 0 :(得分:0)
我有一个类似的问题,这就是我如何解决它:
.otherwise({
templateUrl: '/app/error.html',
resolve: {
// Here we ensure that our route has the document fragment (#), or more specifically that it has #/ at a minimum.
// If accessing the base URL without a trailing '/' in IE7 it will execute the otherwise route instead of the signin
// page, so this check will ensure that '#/' exists and if not redirect accordingly which fixes the URL.
redirectCheck: ['$location', function ($location) {
var absoluteLocation = $location.absUrl();
if (absoluteLocation.indexOf('#/') === -1) {
$location.path('/');
}
}]
}
});