AngularJS IE 8支持

6

我正在使用AngularJS、ui-router和jquery构建一个单页网站,并需要支持ie 8浏览器。
我按照AngularJS文档(链接)的说明进行操作,并且还阅读了这篇文章并遵循其指示。
简而言之,我添加了以下代码到头部:

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

而且:

<!--[if lt IE 9]>
    <script type="text/javascript" src="/app/js/3rdparty/html5shiv.js"></script>
    <script type="text/javascript" src="/app/js/3rdparty/json3.min.js"></script>
<![endif]-->

我所有的指令都只能用作属性指令(不能自定义标签)。
但是,没有任何视图被渲染,也没有任何指令在ie8上工作。

我最近才开始使用ui-router,但问题甚至在之前就存在了。
我真的找不到问题所在,而且我已经搜索了很多。
有很多重复的内容,我知道,但他们的解决方案都没有帮助到我(大部分参考了angularjs的文档)。
我没有发布任何其他代码,因为有很多代码,而且我真的无法确定除index.html之外的哪部分代码可能会引起任何问题。
如果你认为其他代码可能有所帮助,我会发布它。
我真的很迷茫,如果有人能指导我解决问题,我会非常感激。
非常感谢。


你能提供更多的标记吗?其他包含的脚本也很重要!例如,最新的jQuery版本已经不再支持IE 8。 - Steve Klösters
3个回答

9

如果您在控制器或服务或工厂中使用 console.log(),那么 IE-8 将无法加载 angular。这很奇怪。


1
这不是我的案例。 我建议使用Angular的$log服务来处理。 但还是谢谢你提醒我! - jonny bordo
@Senthil - 那确实是真的。谢谢。 - pingu
这个让我省了数小时的苦思冥想,谢谢你。 - DrewT

5

看起来我有点傻了。
问题在于我使用了一些保留字,显然IE8非常不喜欢它们。
例如,我在一个对象上有一个名为"class"的参数,所以使用obj.class会让IE8崩溃。
同样的问题出现在一个函数命名为"delete"时(再次在一个对象内部,所以我使用了functionHoldingObject.delete)。

我知道保留字的问题,只是没有想到把它们用作对象参数会有害。 为了解决这个问题,我只是更改了一些名称,并对其他名称使用了obj["reservedWord"],这两种解决方案都适用于所有浏览器。

我发现的另一个错误是,我在不知道IE8不支持它的情况下使用了Array.prototype.indexOf函数。所以我只是添加了一个实现(非常容易)。 您可以在MDN网站上获得帮助。


0

最近我遇到了同样的问题,因为兼容模式的原因。

尝试使用以下方法强制解决:

<!--[if IE 8]><!--> <meta http-equiv="X-UA-Compatible" content="IE=8" /> <!--<![endif]-->

同时在您的IE8浏览器中检查是否关闭了兼容模式(Compatibility Mode),以确保不会运行IE7。


请在您的答案中使用 " 代替 “ 和 ” 来表示 HTML。 - Daan

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