我正在尝试创建一个Chrome扩展程序,它会在相对于最近关注的窗口的位置弹出一个新窗口。我认为我没有正确使用chrome.windows.getCurrent
或chrome.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让我对如何实际返回窗口属性感到困惑。有人能在这里说清楚吗?
答案 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()
传递窗口信息。