AngularJS路由在IE7中无法工作

20

不确定是否是原因,但根据 AngularJS 的常见问题解答页面,它仅在 IE8+ 上经过测试。http://docs.angularjs.org/partials/misc/faq.html - Martin
2
您还可以在此处查看详细说明的文档:http://docs.angularjs.org/guide/ie - F Lekschas
@Flek 我没有使用自定义标签名称,也尝试了评论中提到的一些方法,但是ie指南中没有任何帮助。 - Tom
3
我们不会在IE7上进行测试,但我们听说有人能够在IE7中运行他们的Angular代码。 - Misko Hevery
@Tom 是的,昨天我也简单地检查了一下,但没有时间进行更深入的研究。 - F Lekschas
4
@MiskoHevery 哈哈.. "我们听说过一些人" ... 他们来自阴暗的地方吗?做着黑暗的事情吗?我对看到这个工作很感兴趣,因为我怀疑其中有巫术的成分。 - Ben Lesh
1个回答

54

好的,我遇到了同样的问题,所以我开始发起悬赏,但之后我找到了可行的解决方案(至少对我而言):

  • 使用 HTML5 shim
  • 使用 JSON2.js
  • 将这些属性添加到您的html节点中:

    class="ng-app:myapp" id="ng-app" ng-app="myapp" xmlns:ng="http://angularjs.org"

(其中myapp实际上是您的应用程序名称)

因此,为了总结一下,这是我的IE7/8/9可工作的HTML页面:

<!DOCTYPE html>
<html lang="en" class="ng-app:myapp" id="ng-app" ng-app="myapp" xmlns:ng="http://angularjs.org">
  <head>
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/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]-->
  </head>
  <body>
    <div ng-view></div>
  </body>
</html>

1
为什么id="ng-app"必须在html标签上?我需要将它移到子div上,这不可能吗? - Neil
@Neil 可以做到。您可以选择任何 div 元素。Angular 将控制该 div 元素内的内容。如果您想在整个页面上使用 Angular,也可以在 html 标签上使用指令。 - hustler
2
我仍然无法使路由正常工作。你能发完整的代码吗? - rro
1
如果有人在IE7中使用路由功能,提供完整的HTML/JS样板将非常有帮助。(上面的示例代码甚至没有包含angular)。目前我的应用程序在IE 7中工作正常,除了路由似乎总是回退到$routeProvider配置的“otherwise”部分。像$routeChangeStart这样的事件也会被触发。 - grandouassou
我已经让IE7的路由工作起来了!看看我fork的angular-ie7.js仓库,了解我添加的修复内容。现在它甚至在IE6上也能用了(据我的测试)。当然,它仍然适用于所有现代浏览器(希望如此)。这需要加入Adrien回答中的建议,以实现在IE7上正常运行angular.js的功能。 - user1177765
兄弟,你需要更新你的答案。 现在你还需要禁用sceProvider。你可以在模块配置中设置$sceProvider.enabled(false)来实现。 干杯 - rogerc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接