我有一个Angular v1.3应用程序,它使用Angular ui-router v0.2.13进行所有路由。该网站适用于所有浏览器,包括IE 10和IE 11,但不适用于IE 9(我们决定不追求IE8,我理解不支持v1.3,无论如何)。尽管我付出了最大的努力,IE 9仍然继续解析为我的$stateProvider's
otherwise
路由(设置为/*path
,这可能是罪魁祸首,因此我禁用了该路由以进行测试。)
为了尝试解析任何其他路线,我尝试设置$locationProvider.html5Mode(false)
,修改$locationProvider.hashPrefix
,将<base href="/" />
更改为各种网址,包括<base href="/#!"/>
,我甚至在xmlns:ng="http://angularjs.org"
标记中添加了<html>
以获得良好衡量标准。无论我尝试什么,IE 9都会不断尝试解析我的otherwise
路由,如果该路由被禁用,则不会尝试解析。顺便说一句,我的主页路由网址设置为/
。
我已经在代码中注意了我的眼球,发布截止日期迫在眉睫,所以我会第一个承认我可能会忽略一些显而易见的事情。任何人都可以提供任何其他提示或技巧,以使ui-router在IE 9中正确解析吗?
答案 0 :(得分:0)
我们使用以下内容:
<!DOCTYPE html>
<html lang="fr" xmlns="http://www.w3.org/1999/xhtml" ng-csp xml:lang="fr-CA">
//...
var app = angular.module('YourApp', [...]);
angular.bootstrap(document, ['YourApp'], {strictDi: true})
//...
angular.module('YourApp').config(['$stateProvider', '$urlRouterProvider', '$locationProvider',
function ($stateProvider, $urlRouterProvider, $locationProvider) {
$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!');
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
cache: false,
controller: 'HomeController as vm'
})
.state('anon', {
url: '/info',
controller: 'AnonController as vm'
})
//等...
答案 1 :(得分:0)
对我来说,IE9正确路由哈希网址/#/example
,但访问/
会解析为其他路由。我通过使用函数来解决这个问题,并检查其中的url。
$urlRouterProvider.otherwise(function($injector){
var state = $injector.get('$state');
var location = $injector.get('$location');
if (!location.url()) {
// handle HTML5 fallback / IE9 when url has no hash
return state.go('home');
}
state.go('404');
});