Chrome扩展程序:创建弹出窗口后访问初始选项卡

时间:2012-11-20 18:42:38

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

我正在尝试创建一个扩展,其中:点击Chrome上的一个按钮,它将启动一个弹出窗口,从该弹出窗口我想从初始标签中获取信息,该信息集中于我按下的时间按钮。

function onClick(tab) {
    var originalTab = tab,
        popupTab;
    chrome.windows.create(
        {
            url: chrome.extension.getURL('popup.html'),
            type: 'popup'
        },
        function (w) {
            w.getCurrent({populate: true}, function (win) {
                var popupTab = win.tabs[0];
                popupTab.insertCSS(null, {code: 'body {background:red;}'});
                //look now I have access to the original and popup tabs!!!
            });
        }
    );
}

chrome.browserAction.onClicked.addListener(onClick);

通过使用以下脚本,没有任何实际发生。

在单击按钮后创建另一个窗口的位置以及创建窗口时,我将获得其中的第一个选项卡。 在这种情况下,我可以访问originalTab和popupTab实例,但不幸的是,这不是正在发生的事情。

此脚本是否有特殊原因无法按预期工作?

提前致谢

1 个答案:

答案 0 :(得分:0)

我不确定你的代码有什么特别的错误,但我这样做了。

在清单中指定了弹出窗口。这一般来说可能并不重要,但如果事件处理程序应该做的唯一事情就是打开弹出窗口,这似乎是一种优选的方法。情况就是这样。

对于popup onload事件,有一个类似的处理程序:

function onLoad()
{
  chrome.windows.getCurrent(
  function(win)
  { 
    chrome.tabs.query({'windowId': win.id, 'active': true},
    function(tabArray)
    {
      // tabArray[0] - is the initially selected tab, so you may do...
      chrome.tabs.insertCSS(tabArray[0].id, {code: 'body {background:red;}'});
    }
  }
}