You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取浏览器操作(browser action)上下文菜单项点击时的鼠标x、y坐标

Firefox扩展工具栏右键菜单坐标获取方案

可以通过Firefox WebExtension的browser.menus原生API直接拿到右键点击的屏幕坐标,无需额外权限,实现逻辑如下:

核心实现原理

browser.menus.onClicked事件的第一个回调参数info,会自带右键点击发生位置的screenX、screenY属性,这两个值就是你右键点击工具栏按钮时的精确屏幕坐标,直接用来计算弹窗定位即可。

示例代码

// 注册工具栏按钮右键菜单项,Manifest V3版本将contexts改为["action"]即可
browser.menus.create({
  id: "open-custom-popup",
  title: "打开扩展弹窗",
  contexts: ["browser_action"]
});

// 监听菜单项点击事件
browser.menus.onClicked.addListener(async (info, tab) => {
  if (info.menuItemId !== "open-custom-popup") return;

  // 直接取右键点击的屏幕坐标
  const clickX = info.screenX;
  const clickY = info.screenY;
  // 自定义弹窗尺寸
  const POPUP_WIDTH = 320;
  const POPUP_HEIGHT = 450;
  // 计算定位,可自行调整偏移值适配按钮对齐效果
  const popupLeft = clickX - POPUP_WIDTH / 2;
  const popupTop = clickY + 8;

  // 打开定位后的独立弹窗
  await browser.windows.create({
    url: "popup.html", // 替换为你的扩展页面路径
    type: "popup",
    width: POPUP_WIDTH,
    height: POPUP_HEIGHT,
    left: Math.max(0, popupLeft), // 避免弹窗超出屏幕左边界
    top: Math.max(0, popupTop) // 避免弹窗超出屏幕上边界
  });
});

注意事项

  • 如果设备开启了系统显示缩放,坐标可能存在微小偏移,可通过browser.windows.get获取当前窗口的缩放比例做适配,普通场景下无需额外处理。
  • 代码中加入了边界判断,避免弹窗定位到屏幕可视区域外。

内容的提问来源于stack exchange,提问作者user17148512

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:45:01