如何修改已注入的JS文件?

时间:2017-09-17 10:55:17

标签: javascript jquery google-chrome-extension

我正在创建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
});

0 个答案:

没有答案