将AngularJS 1.4.7注入IE crossrider扩展中

Injecting AngularJS 1.4.7 into an IE crossrider extension

本文关键字:IE crossrider 扩展 注入 AngularJS      更新时间:2023-09-26

我正在使用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工作站12上的Windows 7 Ultimate 32位

我认为这里存在混合作用域问题。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的员工]