【问题标题】:How to get an AngularJS app working in IE8?如何让 AngularJS 应用程序在 IE8 中运行?
【发布时间】:2014-12-04 18:16:04
【问题描述】:

我正在尝试让我的 AngularJS 应用程序在 IE8 上可用。我正在使用AngularJS v1.2.16。使用 (http://www.browserstack.com/) 进行测试,当我将堆栈设置为 IE8 时,我可以看到这一切都崩溃了。但是,当我注入此行时,我正在关注 this link from angular docs 以使该应用程序正常工作

<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="myApp">

浏览器不显示页面上的任何对象(仅显示页眉和页脚),并且仍然无法在 IE 上运行。这是因为上面这段特定的代码

ng-app="myApp"

我想知道这是否是我无法让我的应用在 IE8 上运行的原因。我已经实现了链接提供的方向的所有方向。但是,我也不确定我是否完全实现了document.createElement(); 组件。我所做的是将我使用过的所有ng-... 标签添加到列表中,如图所示。

<!--[if lte IE 8]>
  <script>
    document.createElement('ng-include');
    document.createElement('ng-pluralize');
    document.createElement('ng-view');
    document.createElement('ng-click');
    document.createElement('ng-repeat');
    document.createElement('ng-show');

    // Optionally these for CSS
    document.createElement('ng:include');
    document.createElement('ng:pluralize');
    document.createElement('ng:view');
    document.createElement('ng:click');
    document.createElement('ng:repeat');
    document.createElement('ng:show');
  </script>
<![endif]-->

第一个问题的原因可能是什么?我是否正确执行了第二个组件?有没有更好/更简单的方法让我的应用在 IE8 中运行?如果不是,我如何将它们重定向/路由到不同的视图并将它们引导到upgrading their browser?谢谢。


EDIT1: 按照 KevinB 的建议,我使用了 IE10 开发工具,切换到 IE8 浏览器模式以查看 js 错误,我得到了这两个错误

SCRIPT438: Object doesn't support property or method 'addEventListener' 
jquery.js, line 3425 character 4
SCRIPT5022: Bootstrap's JavaScript requires jQuery 
bootstrap.js, line 7 character 38

livepo 建议这似乎是 jQuery 的错误(2.xx 不支持 IE8,必须是 1.11.x)。

将 jQuery 版本更改为 1.11.1 并消除了错误,但视图仍然一团糟。这是因为 bootstrap compatibility 使用 IE8。

结论:这个问题会引出许多不同的问题,因此将打开一个新问题以供进一步讨论。感谢大家对此的支持。

【问题讨论】:

  • 您使用的是旧版本的 AngularJS 吗? 最新版本 (1.3) 不支持 IE8。
  • 我的猜测是该指南是为 Angular 1.2 而不是 1.3 编写的
  • @KevinB 最新的稳定版本 (1.2.X) 可以。最新的不稳定版本 (1.3.X) 没有。幸运的是,Angular 指南明确提到了 OP 希望注意到的 1.3 和 1.2 中的差异
  • @Jonathan 大概只要 MS 支持 Windows7,2020 年 1 月 14 日?
  • 是的,jQuery 2.x 是罪魁祸首。您可以安全地将其切换到 1.11.1,而不必担心冲突。

标签: javascript angularjs internet-explorer internet-explorer-8


【解决方案1】:

希望这篇 SO 文章会有所帮助。 Why does ng-class="ng-app" break AngularJS?

建议将 class="ng-app:myApp" 添加到 html 标签中。请尝试本文中的建议,看看是否有帮助。

请注意,您需要 document.createElement() 调用的唯一原因是您使用自定义标签,例如

<my-custom-tag></my-custom-tag> 

使用

<div my-custom-tag></div>

将消除对整个部分的需要。

编辑:忘记了“代码”部分

【讨论】:

  • 嗨 livepo,我已经尝试了您的解决方案,但仍然不行。我在控制台中也没有看到任何错误。我在链接线程中遇到了与迈克相同的错误。引用-“这解决了本地所有浏览器中的视图问题,但是当我使用 IE 从另一台机器指向服务器时(Chrome 远程工作正常),我的视图只是显示为一个空的 。此外,所有版本的 IE 正在遭受奇怪的行为,当我尝试检查元素时,他们有这些......
  • 嘿 stcho,他通过在页面顶部添加 解决了这个问题。你也包括了吗?引用 - “知道了。添加 让它停止默认为 Quirks 模式,这是我大多数问题的原因,然后我只需要修复一些在好的浏览器中不是问题的随机错误。感谢您的帮助”
  • 我刚刚注意到您的最后一条评论。在我看来这是 jQuery 的错误(2.xx 不支持 IE8,您必须使用 1.11.x)。
  • 啊,我明白了。目前我正在使用 v2.1.1。我不知道将 jQuery 的版本更改为 v1.x.x 是否值得,因为其他库可能依赖于较新版本的 jQuery。
  • jQuery 1.11 和 2.1 具有完全相同的 API,唯一的区别是对旧 IE 版本的支持。你应该没事。
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多