[英]Fixing AngularJS problems in IE8
我已经在Firefox上使用AngularJS 1.2.13(和JQuery 1.11.0)开发了一个应用程序。 在Chrome上也可以正常使用。 现在是困难的部分。 我遵循了一些建议以使其在IE8上正常工作。
加载页面时,当前在开发工具窗口的JS控制台中得到非常有用的“ [object Error]”(什么也没有)。 该页面显示了已下载的原始html,因此Angular基本上无法执行任何操作。
这是我的index.html的顶部:
<!DOCTYPE html>
<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="DiagApp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--[if IE 8]><!--> <meta http-equiv="X-UA-Compatible" content="IE=8" /> <!--<![endif]-->
即使我不处于怪癖模式(在开发工具窗口中,“文档模式”表示“ IE7标准”,而不是“怪癖模式”),我仍然得到以下信息:
[$sce:iequirks] Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.
http://errors.angularjs.org/1.2.13/ $ sce / iequirks angular.js,第3689行,字符19
因此,我在模块的config函数中添加了以下内容,以解决此问题:
$sceProvider.enabled(false);
当我在“脚本”标签中查看HTML时,它们似乎都已正确着色,这向我表明它已正确验证(我早先在HTML中发现了一个错字,导致该错色不正确(Firefox和Chrome被忽略))。
我设置了断点以表明它正在加载我的模块,以及在主控制器中。 那表明我正在加载模块,但是从没有碰到我的主控制器。 我尝试在angularjs代码中设置一些断点,但是这导致了各种曲折的段落,没有明显的价值。
我听说有一些我应该用于<= IE8的polyfill,但是我只注意到有提到<= IE7的polyfill。
我还能尝试什么吗?
如果要在IE8中支持Angular应用程序,需要考虑几个因素,即:
从上面看到的HTML中,您似乎需要进一步修改HTML标头才能开始。 就我而言,我有一个共享的“ _Layout.cshtml”页面,在此页面中,我仅做一次以下更改:
<!--[if lte IE 8]>
@Styles.Render("~/Content/iecss")
<script src="~/Scripts/Libs/respond.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.js"></script>
<![endif]-->
<!--[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="~/Scripts/Libs/json2.js"></script>
<![endif]-->
<!--[if lte IE 8]>
<script>
document.createElement('my-editor');
</script>
<![endif]-->
当我必须支持怪癖模式时,我发现一旦您设置了$sceProvider.enabled(false);
并添加所有垫片,您还需要polyfill indexOf
和filter
。 最近,我一直在使用https://github.com/es-shims/es5-shim来达到目的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.