我的Chrome扩展程序由background.js
和content.js
组成,我从background.js
启动。我有两个图标显示扩展程序是打开还是关闭,为此我根据this example使用background.js
中的以下脚本:
var toggle = false;
chrome.browserAction.onClicked.addListener(function(tab) {
var config = {allPages: []};
toggle = !toggle;
if(toggle){
chrome.browserAction.setIcon({path: "on.png"});
chrome.tabs.executeScript(null, {
code: 'var config = ' + JSON.stringify(config)
}, function() {
chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.executeScript(null, { file: "content.js" });
});
});
console.log('active ');
}
else{
chrome.browserAction.setIcon({path: "off.png"});
chrome.tabs.executeScript(null, {code:"console.log('not active')"});
}
});
图标切换工作正常,但脚本执行却没有。即使图标显示扩展名已关闭,内容脚本仍然有效。
我在content.js
中的代码如下:
$(document).ready(function(){
var url = document.location.href;
var pageModel = {
url: url
};
config.allPages.push(pageModel);
chrome.storage.local.set({'config': config}, function () {
console.log('savedPageModelNew: ', config);
});
});
如何切换图标,还可以切换脚本?坦率地说,content.js
中的剧本非常庞大,我不能把它全部放在这里。我需要的是内容脚本,当扩展程序打开时工作,并在扩展程序关闭时“暂停”。也许有人有答案?
我真的希望如此。非常感谢提前!
P.S。这也是我的manifest.json:
{
"manifest_version": 2,
"name": "ChromeExt",
"version": "1.0",
"permissions": [
"activeTab",
"tabs",
"<all_urls>",
"contextMenus",
"storage",
"https://*/*", "http://*/*"
],
"browser_action": {
"default_title": "Inactive.",
"default_icon": "off.png"
},
"background": {
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": ["http://*///*//", "https://*/*"],
"css": ["mainStyles.css"]
}
]
}