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

Firefox扩展:右键点击前根据选中文本更新上下文菜单标题

Firefox扩展上下文菜单动态切换标题实现方案

核心问题分析

你当前代码的问题在于:

  • 未定义isNullOrWhitespace判断函数
  • 错误使用普通鼠标事件而非扩展专属的菜单触发事件,无法正确获取包含选中文本的info上下文对象
  • 缺少菜单刷新步骤,配置更新后无法立即生效

正确实现代码

  1. 实现空白文本判断函数
function isNullOrWhitespace(str) {
  return !str || str.trim().length === 0;
}
  1. 监听菜单显示前事件,动态更新标题
// 扩展启动时先创建基础菜单项(若未创建)
browser.menus.create({
  id: "translate-page",
  title: "Translate Page", // 默认标题
  contexts: ["page", "selection"] // 确保在页面和选中文本场景下都显示
});

// 监听菜单显示事件,在弹出前更新标题
browser.menus.onShown.addListener((info) => {
  const newTitle = isNullOrWhitespace(info.selectionText) ? "Translate Page" : "Translate Text";
  browser.menus.update("translate-page", { title: newTitle });
  // 调用refresh让更新在本次菜单弹出时生效
  browser.menus.refresh();
});

关键说明

  • 使用browser.menus.onShown事件:这是Firefox扩展专门用于上下文菜单显示前的回调,能直接获取包含selectionText的上下文信息对象
  • 调用browser.menus.refresh():更新菜单项配置后必须调用此方法,才能让新标题在当前弹出的菜单中生效
  • 菜单上下文设置:contexts同时包含page和selection,保证无论是否选中文本,菜单项都能正常显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:07:10