ExecuteScript方法

时间:2013-06-09 16:33:09

标签: google-chrome-extension

基本上我正在尝试按照Google文档进行一些Chrome扩展。我想在每次单击扩展按钮时注入脚本。 到目前为止,这是我的表现:

    {
  "name": "Example",
  "manifest_version": 2,
  "version": "1.0",
  "permissions": [
    "tabs"
  ],
  "description": "My Chrome extension.",
  "browser_action": {
    "default_icon": "icon.png"
  },
   "background": {
    "scripts": ["background.js"]
  }
}

这是我的背景.js:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(tab.id, {code: "content_script.js"});
});

问题是即使尝试使用如此简单的alert("aaa");

,也不会触发content_script 你能告诉我我做错了什么吗?我无法理解。

2 个答案:

答案 0 :(得分:13)

要在页面上执行内容脚本,您必须在清单文件中请求正确的主机权限。

由于您希望在单击浏览器操作按钮时插入内容脚本,因此只需请求activeTab permission即可。此外,您可以放弃tabs权限,将permission warnings的数量减少为零!

{
  "name": "Example",
  "manifest_version": 2,
  "version": "1.0",
  "permissions": [
    "activeTab"
  ],
  "browser_action": {
    "default_icon": "icon.png"
  },
   "background": {
    "scripts": ["background.js"]
  }
}

activeTab权限为introduced in Chrome 26。如果您需要支持Chrome 25及更早版本,请将*://*/*<all_urls>权限添加到清单文件中。< / p>

注意:如果您向chrome.tabs.executeScript添加回调,则会在chrome.runtime.lastError.message中收到有用的错误消息:

  

无法访问网址“http .....”的内容。扩展程序清单必须请求访问此主机的权限。

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(tab.id, {
        file: "content_script.js"
    }, function() {
        if (chrome.runtime.lastError) {
            console.error(chrome.runtime.lastError.message);
        }
    });
});

答案 1 :(得分:6)

除了Rob的修复,你应该使用{file: "content_script.js"}