我正在尝试通过其附加组件SDK找到一种自定义方式 - 在Firefox中的标签上下文菜单中添加更多项目。到目前为止,我知道我们只能自定义page context。有谁知道我们如何才能完成我想要做的事情?
还有类似的question询问了Google Chrome。
答案 0 :(得分:0)
如果还有任何帮助,这就是我到目前为止为了向youtube.com添加“menuitem”选项卡右键菜单所取得的成就
// Import necessary APIs
var tabs = require("sdk/tabs");
var { MatchPattern } = require("sdk/util/match-pattern");
var pattern = new MatchPattern("*.youtube.com");
// Localization
var _ = require("sdk/l10n").get;
// Convert higher-level object to lower-level one
var { viewFor } = require("sdk/view/core");
tabs.on('ready', function(tab) {
if (pattern.test(tab.url)) {
let doc = viewFor(tab.window).document
let menu = doc.getElementById("tabContextMenu");
let newtab = doc.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul","menuitem");
newtab.setAttribute("id", "contexttab-newtab");
newtab.setAttribute("label", _("newtab_string"));
newtab.setAttribute("accesskey", _("newtabaccesskey_string"));
newtab.setAttribute("oncommand", "BrowserOpenTab();");
menu.insertBefore(newtab, menu.firstChild);
}
});
来自let menu = doc.getElementById("tabContextMenu");
的代码在https://addons.mozilla.org/en-US/firefox/addon/new-tab-in-tab-context-menu/
基本思想是你需要根据this页面将tab.window对象转换为'chrome window'(较低级别和较旧的XUL类型对象/ api)。然后直接将上下文menuitem
创建为XUL对象。
希望这有帮助。