尝试在单击扩展按钮时修改我的代码,它将在所有打开的选项卡上执行,而不是仅在活动选项卡上执行。
background.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, { file: "jquery-2.1.0.min.js" }, function() {
chrome.tabs.executeScript(null, {file: "change.js"});
});
});
的manifest.json
{
"manifest_version": 2,
"name": "GSHOP",
"version": "2",
"description": "I do Stuff",
"background": {
"persistent": false,
"scripts": ["jquery-2.1.0.min.js", "background.js"]
},
"browser_action": {
"name": "Manipulate DOM",
"icons": ["icon.png"],
"default_icon": "icon.png"
},
"permissions": [
"activeTab",
"tabs",
"http://*/*", "https://*/*"
]
}
我相信我有逻辑,我只是想不通怎么做。我相信我需要找到有多少标签打开tabs.length?
并迭代它们,但我无法让它工作。
不起作用
chrome.browserAction.onClicked.addListener(function(tabs) {
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.executeScript(tabs[i].id, {file: "jquery-2.1.0.min.js" }, function() {
chrome.tabs.executeScript(tabs[i].id, {file: "change.js"});
});
}
});
答案 0 :(得分:2)
试试这样:
chrome.browserAction.onClicked.addListener(function (tab) {
chrome.tabs.query( {} ,function (tabs) { // The Query {} was missing here
for (var i = 0; i < tabs.length; i++) {
chrome.tabs.executeScript(tabs[i].id, {file: "jquery-2.1.0.min.js"});
chrome.tabs.executeScript(tabs[i].id, {file: "change.js"});
}
});
});
答案 1 :(得分:1)
chrome.browserAction.onClicked
回调为当前标签选择一个tab
对象。不是所有标签的列表。在onClicked
回调中,您必须运行chrome.tabs.query并循环浏览query
回调中的标签。
答案 2 :(得分:1)
试试这个。希望这个有所帮助。
chrome.browserAction.onClicked.addListener(function(tab) {
executeScriptsInExistingTabs();
});
function executeScriptsInExistingTabs(){
chrome.windows.getAll(null, function(wins) {
for (var j = 0; j < wins.length; ++j) {
chrome.tabs.getAllInWindow(wins[j].id, function(tabs) {
for (var i = 0; i < tabs.length; ++i) {
if (tabs[i].url.indexOf("chrome://") != 0) {
chrome.tabs.executeScript(tabs[i].id, { file: 'js/change.js' });
}
}
});
}
});
}