我正在尝试一个简单的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"]
}
}
答案 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 )。