В оверлее добавляю свой пункт к меню

Выделить код

Код:

<popup id="contentAreaContextMenu">
  <menuitem id="MyID" insertafter="context-copylink" label="MyLabel" oncommand="MyFunc();"/>
</popup>

меню добавляется, но его ВСЕГДА видно, а мне нужно ТОЛЬКО когда на ЛИНК пользователь нажал.
Причем если не по ссылке меню выскакивает, то добавленный пункт на самом верху оказывается :cry:

Пункту меню надо добавить атрибут hidden, надо поставить обработчик onpopupshowing на contentAreaContextMenu, в котором изменять соответственно атрибут hidden, скорее всего, проверяя глобальную переменную gContextMenu, свойство onLink. Какие там поля можно посмотреть в browser.js.

Насчет глобальных переменных не в курсе, но ведь можно же просто «синхронизировать» hidden добавляемого пункта с каким-нибудь стандартным (Сохранить ссылку как / Отправить ссылку ...).
contentAreaContextMenu показывается =>
document.getElementById('MyID').hidden = document.getElementById('context-sendlink').hidden;
Но вариант Антона «правильнее»...

Не получаеться почемуто:(
xul файл, пункт успешно прячеться

Выделить код

Код:

<popup id="contentAreaContextMenu">
  <menuitem id="MyID" hidden="true" insertafter="context-copylink" label="MyLabel" oncommand="MyFunc();"/>
</popup>

js файл, но показаться не хочет, хотябы безусловно

Выделить код

Код:

document.getElementById("contentAreaContextMenu").addEventListener("onpopupshowing", todowhenpopup, true);
function todowhenpopup(event)
{
	document.getElementById("MyID").hidden = false;
	//document.getElementById("MyID").hidden = document.getElementById('context-copylink').hidden;
}

function MyFunc(){...

вместо onpopupshowing пробывал onpopupshown и popupshowing результат тот же, точнее никакого - не появляется пунктик:cry:
Может не там Event Listener добавляю?

Добавлено Пнд 25 Июн 2007 21:11:13 :
заработала:D

Выделить код

Код:

window.addEventListener("load", initOverlay, false);
function initOverlay() {
  var menu = document.getElementById("contentAreaContextMenu");
  menu.addEventListener("popupshowing", contextPopupShowing, false);
}
function contextPopupShowing()
{
	document.getElementById("MyID").hidden = !gContextMenu.onLink;
}

источник http://kb.mozillazine.org/Adding_items_to_menus

А как узнать куда пользователь правой кнопкой нажал?

UPD document.popupNode