我正在为Google Chrome开发扩展程序。我为我的扩展程序创建了一个图标。我想做的是以下内容:
我认为很清楚,但是例如:假设我在清单文件中设置了以下属性:
"content_scripts" : [
{
"matches" : ["http://stackoverflow.com"],
"js" : ["script.js"]
}
]
让我们说我有两个标签:第一个是手动打开的,第二个是通过点击扩展名的图标打开的。现在,我在两个选项卡中打开stackoverflow的索引页面。在第一个选项卡中没有任何反应,但在第二个选项卡中运行“script.js”脚本。 我怎样才能实现它?我知道我可以实现tab的id检查,但是没有更简单的方法来实现它吗?
答案 0 :(得分:2)
在这种情况下,您不应该使用清单中的content_scripts
条目。您可以使用chrome.tabs.executeScript
调用来运行内容脚本。您需要跟踪您创建的标签,但这并不难。
你可以在后台脚本中使用这样的东西:
var createdTabs = {};
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.create( {}, function( tab ) {
createdTabs[tab.id] = true;
}
}
chrome.tabs.onUpdate.addListener(function(tabId, changeInfo) {
if( createdTabs[tabId] && changeInfo.url )
chrome.tabs.executeScript( tabId, {file: 'script.js'} );
}