IE9和角度路由问题

时间:2015-03-25 13:21:47

标签: angularjs angular-routing

这将有点长,但我希望能让自己清楚。请问我是否没有充分解释一点。

使用以下结构/设置,我已经完成了除IE9之外的所有浏览器的一切工作。对于以下任何事情,我不需要提供支持;因此问题在于EI9。我没有使用UI路由器。

  1. 网站网址http://domainname

  2. 内部网页链接1 <a href="page1">page1</a> - 点击此链接应该让我http://domainname/page1

  3. 内部网页链接2 <a href="page2">page2</a> - 点击此链接应该让我http://domainname/page2

  4. 基地<base href="/">

  5. HTML5模式启用$locationProvider.html5Mode(true)

  6. 相关路线配置

  7. .when('/',{ templateUrl : 'pages/homepage.html', controller : 'homepageController' }).when('/page1',{ templateUrl : 'pages/page1.html', controller : 'page1Controller' }).when('page2',{ templateUrl : 'pages/page2.html', controller : 'page2Controller' })

    1. PhP htaccess重定向 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . index.php [L] - 这是为了直接转到页面而不是登陆索引,因此不会给路由机制提供接管的机会
    2. 我的IE9问题

      以上网站网址转化为http://domainname/#/ - /#/被插入到链接中 - 我希望它已经消失,因为它会导致以下问题:

      1. 访问<a href="page1">page1</a>时,我收到的链接变为http://domainname/#/page1 - 但加载正常。尝试从page2
      2. 访问page1页面时,问题就变得明显了
      3. 访问<a href="page2">page2</a>时,我收到的链接变为 http://domainname/#/page1/page2,最糟糕的情况是http://domainname/#/page2 - Angular会将URL添加到现有网址,作为一种子路由。所以等等其他​​页面 - URL连接。
      4. 我认为这与IE9不支持HTML5推/弹的事实有关,我猜它是Angular使用的。我不确定,我是新来的。至少$locationProvider.html5Mode(true)是我所知道的IE9的错误。

        我目前陷入困境,并会对此事表示感谢。

        编辑:以下答案是一个可行的解决方案,我会在进一步调查后接受“解决问题”的答案。如果您遇到同样的问题,请使用它。

1 个答案:

答案 0 :(得分:1)

我已经为ie9下的angular 1.3路由问题创建了这个pluncker example。你可以在ie9下运行这个例子,它运行良好。

请注意,plunker示例动态地将<base href = ""/>设置为document.location。对于你的连续网址问题,我认为这可能是<base href>的问题。设置为<base href="/" />可以解决问题。

我还在github上为这个问题创建了一个repo(事实上,这是一个无限$ digest问题,但路由仍然有效,请参阅#9235)。你可以测试这个sample。在此示例中,我设置了<base href="/app/" />,因为基本网址为app

希望帮助。