我正在编写一个 Chrome 扩展程序,它将一些 JS 注入页面。我的 JS 存储在script.js
. 我使用 acontentscript.js
来实际进行注入(如this SO answer中所建议的那样)。这一切都很好。
我script.js
使用 jQuery,因此也需要jquery.js
注入一堆插件。所以我的contentscript.js
样子是这样的:
var a = document.createElement('script');
a.src = chrome.extension.getURL("jquery.min.js");
a.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(a);
...4 more similiar plugin script injections...
var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
顺序script.js
是它们必须被评估的顺序。
我的问题是,根据加载的方式,我似乎无法保证jquery.min.js
在 my 之前得到评估script.js
,从而导致诸如“$ undefined”和“Object does not have ... method”(对于插件)之类的错误。
仅供参考,我知道这不是一个巨大的阻塞问题,因为当它们都被缓存并以正确的顺序加载时,我的扩展程序可以完美运行。这就是让我相信问题在于负载的原因。
如何执行我需要的关于如何评估我的脚本的顺序?