Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№122-12-2004 18:21:53

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Нужна помощь в удалении пункта меню

Такая проблема, нужно удалить стандартный пункт меню (скажем в меню "Help" нужно убрать пункт "About Firefox" и заменить его на "About Ragnaar" :) ). Задача усложняется тем, что у этого пункта нет идентификатора (если бы он был, я бы сейчас это не писал), идентификаторы есть у родительских элементов (<menu> и <menupopup>). Думаю, что такая очевидная вещь должна быть предусмотрена, но мои поиски ничего не дали...
Если уж совсем нет идей, то подскажите расширение, которое при установке удаляет или заменяет стандартный пункт меню (чтобы в нем покапаться)...

Отсутствует

 

№222-12-2004 23:53:16

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771

Re: Нужна помощь в удалении пункта меню

то подскажите расширение, которое при установке удаляет или заменяет стандартный пункт меню

Cutemenus так извращается, добавляя иконки к пунктам меню у которых нет идентификатора.
Из-за этого здорово мучался подгоняя его к русской версии Firefox.


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№323-12-2004 08:59:44

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: Нужна помощь в удалении пункта меню

Я его смотрел - добавить - нет проблем, это очень просто, а вот удалить...

Отсутствует

 

№423-12-2004 17:07:14

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: Нужна помощь в удалении пункта меню

Попробую, спасибо...

Отсутствует

 

№524-12-2004 14:00:28

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: Нужна помощь в удалении пункта меню

Не получилось. Виновато мое плохое знание JS. Если можно разжевать с примерами - буду очень благодарен.
Но я нашел более простое решение. Создал в раширении CSS файл, где прописал:
#menupopup_id menuitem[label="x"]{display: none;}
и подключил его к своему XUL файлу. Сработало. Но я думаю уже все увидели слабось этого решения. Атрибут label - не жестко задан, а берется из локали, соответственно при смене - правило работать не будет (что и происходит в известном расширении cutemenus)... 
И тут я вспомнил про псевдокласс :first-child. К счастью, тот пункт что нужно удалить им и является. Соответственно меняем строку в CSS:
#menupopup_id menuitem:first-child{display: none;}
Работает. Но :) Тут уже вступает в дело эстетика. Пункт который я вставляю вместо удаленного меняет позицию.  Мелочь, но коробит... Единственный выход который я вижу - полностью через  CSS убить все это подменю и создать свое с нужными элементами в нужном порядке.  Но концептуально это еще хуже чем поменявшиеся местами пункты в нынешнем варианте (я уж не говорю о разросшемся коде).  Вот такой я придирчивый товарищ :)
Если есть более изящное решение на JS буду благодарен за разъяснения.

Отсутствует

 

№624-12-2004 14:46:11

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: Нужна помощь в удалении пункта меню

Выглядит симпатично, но (вот оно плохое знание JS) я не доганяю как лучше оформить это в расширении... В теле XUL загнать в <script> или подключить отдельный файл? Я вчера пробовал - не получилось... :(

Отсутствует

 

№724-12-2004 18:53:31

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: Нужна помощь в удалении пункта меню

Тупить так уж до упора... :)
создаем функцию menuKiller()

function menuKiller(id){
     var m = document.getElementById('id').childNodes;
     im = m.item(0);
    im.setAttribute('label','&menu.label;');
    im.setAttribute('oncommand','menu();');
}
Но кто эту функцию будет вызывать с параметром id? Можно запихать идентификатор рорup прямо в тело фукции... Но эфекта ноль... Причем консоль JS молчит
если опустить функцию и поместить код так:
     var m = document.getElementById('menupopup_id').childNodes;
     im = m.item(0);
    im.setAttribute('label','&menu.label;');
    im.setAttribute('oncommand','menu();');

то в консоли получаем  -  document.getElementById("menupopup_id") has no properties
Нет, пришло время заняться JS хотя бы ради того чтобы не смешить половину инета своими потугами :)

Отсутствует

 

№824-12-2004 22:09:18

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: Нужна помощь в удалении пункта меню

:) Так оверлей и сделан...  Через него и добавляется новый пункт меню... Дело в том, что именно нужен новый пункт со своей функцией, тьфу... он не нужен, он уже сделан.  С DTD проблем нет (как ни как я вроде локализатор nvu :) ) в данном случае не в нем дело, нужно не название менять, а функцию...  Ладно, на данном этапе остановимся на варианте с CSS :)

Отсутствует

 

№924-12-2004 23:11:00

ragnaar
Administrator
 
Группа: Administrators
Зарегистрирован: 14-10-2004
Сообщений: 2567
Веб-сайт

Re: Нужна помощь в удалении пункта меню

Да, наверно, я не подумал, что  "заменить пункт меню" можно понять как заменить просто название этого пункта, а не функционал :)  Ну я уже подумал, что для расширения - пойдет и CSS вариант, а когда руки дойдут до сборки русской версии nvu - там я просто в самих файлах программы это изменю. kirill  спасибо, что откликнулись на просьбу помочь, надеюсь в будущем можно будет надеятся на совет :)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]