我正在尝试开发一个 ff 插件,它允许用户右键单击表单元素并执行与之关联的任务。
不幸的是,有人认为上下文菜单不应该出现在 ff 中的表单输入中,尽管进行了长时间的讨论https://bugzilla.mozilla.org/show_bug.cgi?id=433168,但它们仍然没有出现在复选框、收音机或选择中.
我确实找到了这个:https ://developer.mozilla.org/en-US/docs/Offering_a_context_menu_for_form_controls但我想不出如何翻译代码以使用新的附加 SDK。我尝试将显示的 javascript 转储到内容脚本中,也尝试通过观察者服务转储,但无济于事。
我也找不到推荐的扩展https://addons.mozilla.org/en-US/firefox/addon/form-control-context-menu/的来源,考虑到它是“专门为演示如何做到这一点而创建的”很令人沮丧。
这似乎是非常基本的插件功能,任何帮助或指向更简单文档的链接将不胜感激。
** 更新 **
我在 main 所需的文件中添加了以下代码,这似乎可以解决问题。
var {WindowTracker} = require("window-utils");
var tracker = WindowTracker({
onTrack: function(window){
if (window.location.href == "chrome://browser/content/browser.xul") {
// This is a browser window, replace
// window.nsContextMenu.prototype.setTarget function
window.setTargetOriginal = window.nsContextMenu.prototype.setTarget;
window.nsContextMenu.prototype.setTarget = function(aNode, aRangeParent, aRangeOffset) {
window.setTargetOriginal.apply(this, arguments);
this.shouldDisplay = true;
};
};
}
, onUntrack: function(window) {
if (window.location.href == "chrome://browser/content/browser.xul") {
// In case we were called because the extension is uninstalled - restore
// original window.nsContextMenu.prototype.setTarget function
window.nsContextMenu.prototype.setTarget = window.setTargetOriginal;
};
}
});
不幸的是,这仍然没有显示禁用输入的上下文菜单,但这对我来说不是一个显示停止器。
非常感谢