为什么 AngularJS 无法在 IE11 中的 Microsoft Dynamics CRM 2015 中调用?

Why won't AngularJS get invoked in Microsoft Dynamics CRM 2015 in IE11?

我设置了一个功能区按钮来从我的网络资源中调用一个 html 页面。我将带有此代码的 example.html 页面添加到 webresources(取自 W3 学校):

<!DOCTYPE html>
<html>
<script     src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js">    </script>
<body>

<div ng-app="">

<p>Input something in the input box:</p>
<p>Name : <input type="text" ng-model="name" placeholder="Enter name here">       </p>
<h1>Hello {{name}}</h1>

</div>

</body>
</html>

点击 example.html 页面会出现,但是 angularJS 出于某种原因没有被调用,并且 {{brackets}} 仍然显示而不是 angular 它们所代表的变量和函数。完全相同的代码肯定适用于我插入的其他 html 编译器,为什么这在 Dynamics CRM 中不起作用,以及如何让 angular 与 html 网络资源一起工作我调用的页面?

附加 Info/Edit: https 与 http 已被建议并且没有影响; webresource 中带有 angular.js 脚本的实际页面也有同样的问题。发现这只是IE的问题,具体使用IE11。在 Chrome 和 Firefox 中按预期工作,但应该支持 IE。

两件事:

  • 您没有 head 标签(虽然大多数浏览器可能处理得很好)
  • 您引用的脚本是 http 而不是 https(真正的问题)

这个有效:

<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
</head>
<body>
    <div ng-app="">
        <p>Input something in the input box:</p>
        <p>Name : <input type="text" ng-model="name" placeholder="Enter name here"></p>
        <h1>Hello {{name}}</h1>
    </div>
</body>
</html>

想通了!它适用于 Chrome/Firefox,这很好,但 IE 是我们的主要客户群,因此它更像是一个 IE 问题,而不是 Dynamics 或 JS 问题。它是通过 Intranet 兼容性设置在 doc-mode 5 中强制使用的,所以我必须找到一种方法来更新它。

通过将其插入 IIS web-config 解决了这个问题,所以现在一切都按预期工作。作为奖励,它还大大加快了每个人的 CRM 导航加载时间!

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
  <add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer> 

附录

对于 IIS 7,最好在您网站的 http 响应 headers 选项中添加 'X-UA-Compatible' 标记,而不是直接操作 Web 配置。

IE 和 Dynamics CRM 中的另一个问题是,在添加该标记后,您只能直接为您的 Web 资源上传 html 文件。如果您上传一个并尝试通过文本编辑器进行简单的更改,Dynamics 本身将添加自己的元 'x-ua-compatible ie=5.0000' 标记,该标记叠加在您的 IIS 更改上,但这仅在您事后进入文本编辑器时才会发生,因此必须在本地对您的 html 文件进行简单的更改,然后重新上传。

这与IE打开HTML网页资源时使用IE7标准的文档模式有关。如果您想查看,IE 会在控制台中报告此消息。我将以下内容添加到我的网络资源并解决了问题:

<!DOCTYPE html>
<html>
<head>
    <title>My page</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />