Chrome扩展程序相对于当前窗口打开弹出窗口

时间:2013-01-31 23:50:11

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

我正在尝试创建一个Chrome扩展程序,它会在相对于最近关注的窗口的位置弹出一个新窗口。我认为我没有正确使用chrome.windows.getCurrentchrome.windows.getLastFocused方法来执行此操作。每当我这样做时,当我试图显示该窗口的属性时,我会收到undefined警报。

在我的background.js文件中,我有:

chrome.pageAction.onClicked.addListener(showPopup);
function showPopup() {
  var left = chrome.windows.getCurrent(function (w) {
    w.left - 200; 
    // also tried: return w.left - 200;
  });
  alert(left); // undefined
}

阅读chrome.windows API docs让我对如何实际返回窗口属性感到困惑。有人能在这里说清楚吗?

1 个答案:

答案 0 :(得分:0)

我不确定是否有另一种(或更好的)方法可以做到这一点,但我让这个工作:

chrome.pageAction.onClicked.addListener(getCurrentInfo);
function getCurrentInfo() {
  chrome.windows.getCurrent(showPopup);
}
function showPopup(win) {
  alert(win.left); // correct pixel count from left
}

我原来的尝试是错误的,因为我试图从get()回调函数返回一个值并将其放入变量中。这基本上被评估为var left = chrome.windows.get(winId, 790),这是一个无效的函数调用。而不是那样,我对chrome.windows.create()的调用需要在内部回调函数。

此外,之前的错过是点击侦听器使用tab参数调用函数,而不是window参数。所以我需要getCurrentInfo()函数传入tab然后chrome.windows.getCurrent()传递窗口信息。