1

我正在尝试创建一个 Chrome 扩展程序,它将在相对于最近聚焦的窗口的位置弹出一个新窗口。我认为我没有正确使用chrome.windows.getCurrentorchrome.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 文档让我对如何实际返回窗口的属性感到困惑。任何人都可以在这里阐明一下吗?

4

1 回答 1

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()传入窗口信息。

于 2013-02-01T00:37:11.227 回答