【问题标题】:google chrome extension browserAction.onClickedgoogle chrome 扩展浏览器Action.onClicked
【发布时间】:2013-07-21 02:41:25
【问题描述】:

我不知道如何使它工作。我的脚本自己工作。但不适用于 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){
.....
}

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

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

    【讨论】:

    • 谢谢谢谢谢谢!!!它解决了我的问题,我几乎一周都无法解决。我不太了解这个计划是如何运作的,但现在我很高兴!!!! :) 谢谢@1337holiday
    【解决方案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"});
    

    【讨论】:

    • null 默认为当前窗口的活动标签。省略参数等同于使用null,请参阅chrome.tabs.query 的文档。
    • 你应该阅读 API,它清楚地表明它是一个可选参数,如 @RobW 所述
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2016-06-13
    相关资源
    最近更新 更多