Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展:创建弹出窗口后访问初始选项卡_Javascript_Google Chrome_Google Chrome Extension_Popup - Fatal编程技术网

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

Javascript Chrome扩展:创建弹出窗口后访问初始选项卡,javascript,google-chrome,google-chrome-extension,popup,Javascript,Google Chrome,Google Chrome Extension,Popup,我正在尝试创建一个扩展:点击chrome上的一个按钮,它将启动一个弹出窗口,从这个弹出窗口中,我想从最初的选项卡中获取信息,该选项卡集中于我按下按钮的时间 function onClick(tab) { var originalTab = tab, popupTab; chrome.windows.create( { url: chrome.extension.getURL('popup.html'),

我正在尝试创建一个扩展:点击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实例,但不幸的是,这并不是正在发生的事情

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


提前感谢

我不确定你的代码到底出了什么问题,但我用了另一种方式

在清单中指定了弹出窗口。一般来说,这可能不重要,但如果事件处理程序只应该打开弹出窗口,那么这似乎是一种更可取的方法。事实就是这样

对于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;}'});
    }
  }
}