我正在创建page_action chrome扩展程序。我的内容页面将我的script.js文件注入html页面。用户可以使用popup.html页面修改chrome扩展的参数。当用户保存参数时,popup.js将这些参数保存到本地存储,并将它们的副本发送到我的content.js文件,我需要将它们发送到我的script.js文件以更新一些变量。
我尝试使用chrome API来访问存储或从content.js向script.js发送消息,但这并不起作用。我尝试从content.js调用script.js函数,但这也不起作用。
我最后一个可以想到的选择是删除注入的script.js。修改文件并重新注入更新的版本。即使这可能,这似乎是一种不好的做法。我还有其他选择吗?
我的清单文件
{
"manifest_version": 2,
"name": "Agar",
"version": "1.0.0",
"icons":{
"128": "icon128.png",
"48": "icon48.png",
"16": "icon16.png"
},
"page_action": {
"default_icon": "icon16.png",
"default_popup": "popup.html"
},
"background": {
"scripts" : ["jquery-3.2.1.js", "eventPage.js"],
"persistent": false
},
"content_scripts": [
{
"matches": ["http://agar.io/*"],
"js": ["jquery-3.2.1.js", "content.js"]
}
],
"permissions": [
"tabs",
"http://agar.io/*",
"storage"
],
"web_accessible_resources": ["script.js"]
}
我的content.js文件
var s = document.createElement('script');
s.src = chrome.extension.getURL('script.js');
s.onload = function() {
this.remove();
};
(document.head || document.documentElement).appendChild(s);
//receives all the parameters saved by the user
chrome.runtime.onMessage.addListener(function(request,sender,sendResponse){
//send request.parameters to script.js
});