在单击扩展按钮时尝试修改我的代码,它将在所有打开的选项卡上执行,而不是仅在活动选项卡上执行.
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"}); }); } });
解决方法
试试这样:
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"}); } }); });