我正在尝试创建一个 Chrome 扩展程序,它将在相对于最近聚焦的窗口的位置弹出一个新窗口。我认为我没有正确使用 chrome.windows.getCurrent 或 chrome.windows.getLastFocused 方法来执行此操作。每次这样做时,当我尝试显示该窗口的属性时,都会收到未定义
警报。
在我的 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让我对如何实际返回窗口的属性感到困惑。任何人都可以在这里阐明一些要点吗?
最佳答案
我不确定是否有另一种(或更好)的方法可以做到这一点,但我已经做到了:
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()
传入窗口信息。
关于javascript - Chrome 扩展程序打开相对于当前窗口的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14637312/