Нужно добавить элемент в контекстное меню... И как сделать проверку - чтоб этот элемент там был только на определенном сайте... или хотя бы чтоб он был активен на нём, а на остальных сайтах, чтоб этот элемент был серенький? =)


Заранее спасибо

Сделать оверлей на <popup id="contentAreaContextMenu">, туда добавить нужный пункт <menuitem hidden="true"...>, по загрузке оверлея добавить на contentAreaContextMenu обработчик события popupshowing, который и будет решать, надо отображать пункт или нет.

ок, спасибо, понял.

А обработчик событий вешать так: ?

Выделить код

Код:

window. addEventListener ("popupshowing", todowhenpopup, true);
function todowhenpopup(event)
{
// if () {} - показывать/не показывать элемент.
}

А как кстати, изменить свойство hidden? document.getElementById("test").hidden=true?

Masletso пишет

...обработчик событий вешать так: ?

Выделить код

Код:

window. addE...

нет.

Выделить код

Код:

document.getElementById("contentAreaContextMenu").addEventListener...

...изменить свойство hidden? document.getElementById("test").hidden=true?

да. чтобы показать пункт - .hidden=false

И ещё, советую посмотреть реализацию nsContextMenu в chrome://browser/content/browser.js - может помочь при проверке условия.

ок =) спасибо...

а вот что-то не получается.
в xul-file:

Выделить код

Код:

<popup id="contentAreaContextMenu">
			<menuseparator />
			<menuitem id="myTest" label="Test " oncommand="test1();" />
			<menuseparator />
  		</popup>

Показывает его, всё ок.
Но:
Далее (в js файле):

Выделить код

Код:

document.getElementById("contentAreaContextMenu").addEventListener("onpopupshown",todowhenpopup,true);
function todowhenpopup(event){
if (window._content.document.location.href.indexOf("test.com")==-1) {
} else {
 txt = grabSelect();
}
}

функцию выполняет, так как переменная txt заполняется выделением, но элемента моего в popup-e нету =(

но элемента моего в popup-e нету

то есть ?

открыватся простой popup =) без моего  <menuitem>

Выделить код

Код:

document.getElementById("contentAreaContextMenu").addEventListener("onpopupshown",todowhenpopup,true);

разве ? вместо onpopupshown afaik должно быть popupshown. ну и можно переиграть 1 и 3 аргументы addEventListener - popupshown/popupshowing; true/false

сорри, там вообще-то popupshown, да. Это я когда вставлял, вставлял из другой пробы и забыл убрать on (там я хотел прописать это прямо в xul файле как атриббут попапу)

Добавлено Втр 24 Окт 2006 19:07:03 :
кстати так работает:
<popup id="contentAreaContextMenu" onpopupshown="todowhenpopup(event)">