0

我正在为 Google Chrome 开发一个扩展。我为我的扩展创建了一个图标。我想做的是以下内容:

  1. 用户单击扩展程序的图标。
  2. 打开一个新选项卡。
  3. 内容脚本按照清单文件中的设置运行,但仅在此选项卡中运行。

我认为这很清楚,但是例如:假设我在清单文件中设置了以下属性:

"content_scripts" : [
    {
        "matches" : ["http://stackoverflow.com"],
        "js" : ["script.js"]
    }
]

假设我有 2 个选项卡:第一个是手动打开的,第二个是通过单击扩展程序图标打开的。现在,我在两个选项卡中打开 stackoverflow 的索引页面。在第一个选项卡中没有任何反应,但在第二个选项卡中运行“script.js”脚本。我怎样才能实现它?我知道我可以实现标签的 id 检查,但是没有更简单的方法来实现它吗?

4

1 回答 1

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'} );
}
于 2013-09-18T16:27:08.373 回答