我有一个角v1.3应用程序,它使用角ui路由器v0.2.13进行所有路由。这个站点在所有浏览器上都很好,包括IE10和IE11,但是IE9(我们已经决定不追求IE8了,我知道v1.3不支持它)。尽管我尽了最大的努力,IE9还是不断地决定使用我的$stateProvider's otherwise路由(该路由被设置为/*path,可能是罪魁祸首,因此我出于测试目的禁用了该路由)。
为了使任何都能解决其他路由问题,我尝试设置$locationProvider.html5Mode(false)、修改$locationProvider.hashPrefix、将<base href="/" />更改为各种URL(包括<base href="/#!"/> ),甚至还在<html>标记中添加了xmlns:ng="http://angularjs.org"以获得良好的效果。无论我尝试什么,IE9都会不断地尝试解析到我的otherwise路由,如果该路由被禁用,则不会出现任何问题。顺便说一下,我的主页路由URL被设置为/。
在发布截止日期即将来临的情况下,我一直在用代码来吸引眼球,所以我将是第一个承认我可能忽略了一些显而易见的东西的人。有人能提供任何其他提示或技巧来使ui路由器在IE9中正确解决吗?
发布于 2016-02-10 18:00:42
我们使用的内容如下:
<!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'
})//等等..。
发布于 2016-11-18 04:14:11
对我来说,IE9为散列urls、/#/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');
});https://stackoverflow.com/questions/29130225
复制相似问题