【问题标题】:Injecting AngularJS 1.4.7 into an IE crossrider extension将 AngularJS 1.4.7 注入到一个 IE crossrider 扩展中
【发布时间】:2016-03-01 13:40:36
【问题描述】:

我正在使用 Crossrider 框架为浏览器开发一个扩展。我正在使用这条线

appAPI.resources.includeJS('js/angular.min.js');

将 angular.js 注入到扩展中。这在 Chrome 上运行良好,但在 IE 11 上我收到错误

---- JS Exception from: IE test staging ----
Error: Object expected
Source: Microsoft JScript runtime error
Location: resources
Line: 131

我环顾四周,发现一些答案表明可能缺少 jQuery,或者代码本身中可能有尾随逗号。但是,我正在使用

var jq = document.createElement('script');
jq.src = "http://code.jquery.com/jquery-1.11.3.js";
document.getElementsByTagName('body')[0].appendChild(jq);

将 jquery 注入到文档中,所以这应该不是问题。至于JS中是否有逗号结尾的可能性,我把AngularJS的缩小版改成非缩小版,但还是报了同样的错误,这让我觉得错误中的行号没有意义。如果这是关心,或者忘记这一点,不管是什么情况。有人可以告诉我发生了什么以及如何解决吗?

PS。我的环境是 Ubuntu 14.04 LTS x64 位机器上 VMWare Workstation 12 上的 Windows 7 Ultimate 32 位

【问题讨论】:

  • 你注意到你的 jquery url 中的双协议了吗? http://code.jquery.com/jquery-1.11.3.js
  • 这不是一个完整的工作示例;所以人们不能像给他们一个 plunker / jsfiddle 一样提供帮助......
  • 我不能为此付出代价。但是你可以自己试试。去 crossrider.com,注册它并将我的代码添加到 extension.js 文件中并在 IE 11 上运行它

标签: javascript jquery angularjs internet-explorer-11 crossrider


【解决方案1】:

我认为您在这里有一个混合的scopes 问题。 appAPI.resources.includeJS 在扩展页面范围内运行,您添加的 jq 元素在 HTML 页面范围内运行。如果要将 AngularJS 添加到 HTML 页面范围,请使用 appAPI.resources.addInlineJS,如下所示:

var jq = document.createElement('script');
jq.src = "https://http://code.jquery.com/jquery-1.11.3.js";
document.getElementsByTagName('body')[0].appendChild(jq);
appAPI.resources.addInlineJS('js/angular.min.js');

[披露:我是 Crossrider 的员工]

【讨论】:

  • 我想在扩展范围内有角度。那么为什么我会得到对象预期的错误呢?
  • 虽然我不熟悉 AngularJS,但据我所知,它不需要 jQuery。一般来说,IE 更注重 JS 代码,因此它可能不喜欢 Angular 库中的某些内容。我建议您使用未缩小版本的 Angular 并添加调试代码以确定问题的确切位置和原因。
  • 要调试的代码超过 30k 行。我怀疑那是可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多