Firefox的附加SDK:上下文菜单没有工具提示?

时间:2015-06-14 14:50:02

标签: firefox firefox-addon firefox-addon-sdk

official documentation context-menu未提及tooltip #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { wprintf(L"%s\n", setlocale(LC_ALL, "C.UTF-8")); wchar_t chr = L'┐'; wprintf(L"%c\n", chr); } 。当用户将鼠标悬停在我的项目菜单上时,是否无法显示弹出文本?

1 个答案:

答案 0 :(得分:0)

可以使用一些额外的代码。

首先,您需要一个虚拟菜单项作为触发器,然后将工具提示添加到实际的菜单项中。

很容易找出addon-sdk模块构建的菜单项,因为它们具有类addon-context-menu-item。很难识别属于你的扩展名的那些。

实现此目的的一种方法是利用data类构造函数的Item属性,该属性可方便地映射到基础xul元素的value属性。

因此,如果data由唯一前缀和所需的工具提示文本组成,那么只需要在正确的时刻进行操作。

&#13;
&#13;
const { getMostRecentBrowserWindow } = require("sdk/window/utils");

var cm = require("sdk/context-menu");
var uuid = require('sdk/util/uuid').uuid();
var uuidstr = uuid.number.substring(1,37)

cm.Item({
  label: "My Menu Item",
  context: cm.URLContext("*.mozilla.org"),
  data: uuidstr+"This is a cool tooltip"
});

cm.Item({
  label: "global Item",
  data: uuidstr+"Tooltips FTW"
});

cm.Item({
  label: "Just a tigger, will never show up",
  contentScript: 'self.on("context", function(){self.postMessage(); return false;})',
  onMessage: function(){
    var chromewin = getMostRecentBrowserWindow();
    var cmitems = chromewin.document.querySelectorAll(".addon-context-menu-item[value^='"+ uuidstr +"']");
    for(var i=0; i < cmitems.length; i++)
      cmitems[i].tooltipText = cmitems[i].value.substring(36);
  }
})
&#13;
&#13;
&#13;

如果你已经使用data,你必须做一些额外的工作。