gpt4 book ai didi

javascript - 修复 IE8 中的 AngularJS 问题

转载 作者:行者123 更新时间:2023-11-30 17:35:05 26 4
gpt4 key购买 nike

我在 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

因此,我在模块中的配置函数中添加了以下内容,从而解决了这个问题:

$sceProvider.enabled(false);

当我在“脚本”选项卡中查看 HTML 时,它似乎都已正确着色,这表明它已正确验证(我早些时候发现我的 HTML 中有一个拼写错误导致它无法正确着色(一个拼写错误Firefox 和 Chrome 忽略了))。

我设置断点以显示它正在加载我的模块,也在主 Controller 中。这表明它正在加载模块,但它从未影响到我的主 Controller 。我尝试在 angularjs 代码中设置一些断点,但这导致了各种曲折的段落,没有明显的值(value)。

我听说我应该为 <=IE8 使用一些 polyfill,但我只注意到提到了 <=IE7 的 polyfill。

还有什么我可以尝试的吗?

最佳答案

如果您想在 IE8 中支持您的 Angular 应用程序,需要考虑几个因素,即:

  • 您需要对 JSON 进行 polyfil 处理以进行字符串化和解析旧版 IE 本身不支持的功能
  • 您需要显式创建任何自定义 HTML 元素标签(自定义IE8 或更低版本不支持 HTML 标签)
  • 你需要摆脱任何杂七杂八的“文档类型”废话你会需要使用“ng-app”属性(我注意到你已经处理了这个)
  • 你需要为 IE 8 的一些 JS 函数创建 polyfill本身不支持,例如 'forEach'

从我看到的 HTML(上面)来看,您似乎需要进一步修改 HTML header 才能开始。在我的例子中,我有一个共享的“_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]-->

关于javascript - 修复 IE8 中的 AngularJS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com