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

标签 javascript google-chrome google-chrome-extension

我正在尝试创建一个 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/

相关文章:

html - 如何禁用谷歌浏览器文本区域大小调整

javascript - 如何在 emberjs 的 chrome 浏览器中获取停止共享按钮的事件处理程序

javascript - 如何获取表单提交的值 popup.html chrome 扩展

javascript - 从内容脚本调用 chrome.i18n.getMessage(...)

google-chrome - "http://*/*"、 "https://*/*"和 "<all_urls>"在 Chrome 扩展程序的权限上下文中意味着什么

javascript - 在 Angular 中将数组数据从按钮推送到表格

javascript - 当窗口从中间滚动到底部时 Plax.js 不工作

javascript - 输入在 phonegap 应用程序中不起作用

javascript - 在 jQuery 的 slideUp 之后保持相同的位置

javascript - 在 Chrome 控制台中查看 Javascript 方法的内容