Angular JS 适用于 Chrome,但不适用于 IE 11

Posted

技术标签:

【中文标题】Angular JS 适用于 Chrome,但不适用于 IE 11【英文标题】:Angular JS works in Chrome, but not IE 11 【发布时间】:2014-07-07 02:09:09 【问题描述】:

我在以下位置选择 Angular JS: http://www.sitepoint.com/practical-guide-angularjs-directives/, 我发现以下代码在 Chrome 中有效,但在 IE 11 中无效。

<!DOCTYPE html>
<html ng-app="myapp">
<head>
    <meta charset="utf-8" />
    <title>No Title</title>
    <script data-require="angular.js@1.2.x" src="http://code.angularjs.org/1.2.7/angular.js" data-semver="1.2.7"></script>
</head>
<body>
    <input type="text" ng-model="color" placeholder="Enter a color..." />
    <div data-hello-world />
    <script>
        var app = angular.module('myapp', []);
        app.directive('helloWorld', function () 
            return 
                restrict: 'AE',
                replace: true,
                template: '<p style="background-color:color">Hello World!!</p>',
                link: function (scope, elem, attrs) 
                    elem.bind('click', function () 
                        elem.css('background-color', 'white');
                        scope.$apply(function ()  scope.color = "white"; );
                    );
                    elem.bind('mouseover', function ()  elem.css('cursor', 'pointer'); );
                
            
        );
    </script>
</body>
</html>

具体来说,鼠标悬停和单击事件可以正常工作。但是,段落的背景颜色在 IE 中没有(颜色永远不会改变)。在 Chrome 中没问题。谢谢!

【问题讨论】:

尝试使用ngStyle 而不是经典的style 属性。 我试过 '

Hello World!!

',但它在 IE 和 Chrome 中都不起作用.我的报价快用完了...!单引号和双引号都已使用。 :(
转义引号 我尝试了 '

Hello World!!

',它在两种浏览器中都有效。谢谢!
这个*** question还有其他几个解决方案。 【参考方案1】:

可能是因为文档兼容性。这对我有用:

将此标签添加到 web.config。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
        <add name="X-UA-Compatible" value="IE=10" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration> 

【讨论】:

这对我有用!我只是想确认 Angular 是否可以工作,因为我的公司已经很好地锁定了他们的 IE。所以,我只有一个非常简单的单行 Angular 表达式,没有控制器或类似的东西。在 IE 11 中不起作用,但在 Chrome 中会起作用。我改变的唯一区别是我使用“IE-11”而不是“IE-10”。 如果你在一个网站上工作并且不能让它离线来做这个改变,但是有一个 .master(如果是一个 asp.net 网站)文件然后添加 到 master 的 也是一个很好的解决方案。感谢下面的@James Gates R 的建议。【参考方案2】:

使用 ng-style 标签而不是 style="CSS"。后者适用于 Chrome 和 Firefox,但不适用于 Internet Explorer

【讨论】:

【参考方案3】:

在控制器之前尝试“使用严格”指令

"use strict";
function controller($scope) 
    // your code....
 

【讨论】:

【参考方案4】:

我将以下内容添加到头部并且它起作用了。它与马克所说的非常相似......只是没有特定于 asp.net:

<meta http-equiv="X-UA-Compatible" content="IE=11" />

我还发现我需要在旧版本 IE 的 if 语句中添加响应和现代化:

<!--[if lt IE 9]>
<script src="/Binders/Scripts/modernizr-2.8.3.js"></script>
<script src="/Binders/Scripts/respond.js"></script>
<![endif]-->

【讨论】:

这是救命稻草。尽管到目前为止我的 angularjs 应用程序一直在愉快地使用 IE,并且即使我没有更改 angular.min.js 文件(它是 v 1.4.4),但这个问题在发布给客户端后一夜之间就出现了.我无法在工作时间让客户离线,但可以在网站的母版页上进行此更改以修复它,而无需取消其他所有会话。

以上是关于Angular JS 适用于 Chrome,但不适用于 IE 11的主要内容,如果未能解决你的问题,请参考以下文章

Angular 6 MatSnackBar 适用于 Chrome 但不适用于 IE11

此 JS/jQuery 代码适用于 Firefox,但不适用于 Chrome

Node.js 应用程序适用于工头,但不适用于 heroku。 404 错误

为啥 jQuery 选择器适用于 Chrome,但不适用于 Safari?

Jquery $.Post 适用于 Firefox 但不适用于 Chrome

为啥这个 CSS 不适用于 Android 上的 Chrome,但适用于其他任何地方?