Chrome扩展程序 - 不在活动标签中的executeScript

时间:2014-01-04 15:58:05

标签: javascript google-chrome google-chrome-extension

我正在尝试一个简单的Chrome扩展程序示例,它可以让我将任何打开的YouTube屏幕标签的背景颜色更改为红色。我注意到的是,如果我在实际页面上,那么页面的背景只会变为红色,即它是活动标签。

代码:

function getYouTubeTabs() {
    queryInfo = {
        'url': '*://www.youtube.com/*'
    };

    chrome.tabs.query(queryInfo, function (result) {
        for (i = 0; i < result.length; i++) {    
            chrome.tabs.executeScript(result[i].id, {
                code: 'document.body.style.backgroundColor="red"'
            });
        }
    });
}

这是我的代码,我可能会遗漏一些东西。不确定是否可以在“非活动”选项卡上使用executeScript。提前谢谢。

修改

的manifest.json

{
  "manifest_version": 2,

  "name": "First menu item",
  "description": "Testing Context Menus",
  "version": "1.0",

  "permissions": [
    "contextMenus", "tabs", "activeTab"
  ],
  "icons": {
    "16": "myicon.png",
    "128": "myicon2.png"
  },
  "background": {
    "scripts": ["background.js"]
  }
}

1 个答案:

答案 0 :(得分:4)

activeTab 权限允许您 call tabs.executeScript or tabs.insertCSS on that tab

相反,为了能够将 programmatically inject 代码添加到非活动标签中,除tabs权限外,您的扩展程序必须<页面的强> cross-origin permissions

因此,您需要修改清单的permissions部分,如下所示:

"permissions": [
    ...
    "*://www.youtube.com/*"
],

"persistent": false部分添加background也可以正常工作( preferred way )。