2015-06-14 80 views
1

official documentationcontext-menu没有提及tooltip。当用户将鼠标悬停在我的项目菜单上时,是否无法显示弹出文本?Firefox的附加SDK:上下文菜单没有工具提示?

+0

我不知道的sdk方法(但我没有sdk专家),但这是你如何做到非sdk:http://stackoverflow.com/questions/27320871/how-to-make-a-firefox-extension -url-button-show-a-string-when-hovers-over/27322368#27322368 – Noitidart

+0

@Noitidart'menuItem.setAttribute('tooltip','test')':TypeError:不是函数 –

+0

跳到irc人那里将帮助你出去https://client02.chat.mibbit.com/?url=irc%3A%2F%2Firc.mozilla.org%2F%23extdev – Noitidart

回答

0

这是可能的,一些额外的代码。

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

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

的一种方式来实现这一点,利用Item类构造函数,它方便地映射到底层XUL元件的value属性的属性data

因此,如果data包含唯一的前缀和所需的工具提示文本,它只是在正确的时刻踢的问题。

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); 
 
    } 
 
})

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

+0

我得到这个错误:'chromewin.document是未定义的'。你可以在这里看到我的代码https://github.com/vitaly-zdanevich/extension-firefox-yandex-translate/blob/master/lib/main.js –

+0

正确[第57行](https://github.com/ vitaly-zdanevich/extension-firefox-yandex-translate/blob/master/lib/main.js#L52),getMostRecentBrowserWindow是一个函数。 – paa

相关问题