//id: the tab id to pass to executeScript
//ar: an array containing scripts to load ( index order corresponds to execution order)
//scrpt (opzional): the last script to execute (if not provided, than the last script is the last insert in previous array)
function concatenateInjections(id, ar, scrpt){
var i = ar.length;
var idx = 0;
function inject(idx){
idx++;
if(idx <= i){
var f = ar[idx-1];
chrome.tabs.executeScript(id, { file: f }, function() {
inject(idx);
});
}else{
if(typeof scrpt === 'undefined') return;
chrome.tabs.executeScript(id, { file: scrpt });
}
}
inject(idx);
}
使用示例:
// id is tab id
// sources: first execute jquery, than default.js and anime.js in the end
var def = [
"lib/jquery-1.11.3.min.js",
"lib/default.js",
"injection/anime.js"
];
// run concatenate injections
concatenateInjections(id, def);
我想这可能有用。
更新
带有concat和closure的版本(更美观):
function concatenateInjections(id, ar, scrpt){
if( typeof scrpt !== 'undefined' ) ar = ar.concat([scrpt]);
var i = ar.length;
var idx = 0 ;
(function (){
var that = arguments.callee;
idx++;
if(idx <= i){
var f = ar[idx-1];
chrome.tabs.executeScript(id, { file: f }, function(){ that(idx);} );
}
})();
}
6条答案
按热度按时间tvokkenx1#
关于:
你可以从这里下载“jquery.js”:http://jquery.com/download/
8gsdolmq2#
把这个加到你的清单文件里怎么样
c9x0cxw03#
更新:
在第一个脚本之后执行第二个脚本在脚本顺序方面会更准确,
result
是选项卡列表中脚本执行结果的数组。旧版:
在脚本之后注入Jquery将使您能够在脚本中访问Jquery。
您可以更好地控制如何注入脚本,如这里所述。特别是
allFrames
属性,如果您希望将脚本注入到文档中的所有帧中,则非常重要。忽略它将只注入顶部帧。由于其他答案中没有提到它,所以猜猜它对您有帮助。脚本可以通过将其添加到manifest来注入,如这里所述。uqzxnwby4#
因为我有很多依赖关系的脚本,所以我使用一个函数
concatenateInjection
,它有三个参数:使用示例:
我想这可能有用。
更新
带有concat和closure的版本(更美观):
5kgi1eie5#
任何时候你想动态插入jQuery,我推荐这个脚本
我个人有一个Chrome自定义搜索“
$
”,它将$
替换为javascript:
只是从url栏运行javascript的方法我在我的
about:blank
页面上使用这个,当我试图快速模拟一些css的情况时fcwjkofz6#
manifest v3更新