谷歌浏览器扩展browserAction.onClicked

时间:2013-07-20 16:41:48

标签: javascript google-chrome-extension

我无法弄清楚如何让它发挥作用。我的脚本独立工作。但不适用于background.js。我希望我的谷歌扩展程序只有在用户点击它的图标时才能工作,所以我创建了文件background.js并推出了代码:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(null, {file: "change_content.js"});
});

我的manifest.json在这里:

{
  "manifest_version": 2,
  "name": "Name",
  "description": "change content.",
  "version": "3.0",


  "browser_action": {

    "default_icon": "icon.png"
  },
   "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["change_content.js"]
    }
  ],


    "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "permissions": [
  "tabs", "http://*/*"
]

}

这是change_content.js:

var oldSource = document.documentElement.innerHTML;
document.body.innerHTML = changeContent(oldSource);
function changeContent(source){
.....
}

2 个答案:

答案 0 :(得分:3)

在按下按钮之前遇到change_content.js正在执行的问题的原因是因为这就是内容脚本的工作原理。如果在manifest.json中包含内容脚本,它将加载并执行该脚本。尝试从清单中删除"content_scripts"部分,您应该看到它应该正常工作。

答案 1 :(得分:-2)

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(null, {file: "change_content.js"});
});

我感觉错误在于你使用“null”,因为它可能正在搜索tabId - null的标签,你应该尝试这样做吗?

chrome.tabs.executeScript({file: "change_content.js"});