2015-06-14 82 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

相關問題