по сети гуляют упоминания про userchrome и xul файлы, но ничего из этого в моей 38 версии не находится. так же давно простыл след известного Menu Editor дополнения, а единственное наличное Menu Wizard не дотягивает до моих требований(скажем нет меню по правому клику в адресной строке). =/
подскажите как всё же вручную отредактировать ЛЮБЫЕ меню FF? (для манипуляций типа удалить, изменить расположение)

http://forum.ru-board.com/topic.cgi?for … it=1&m=1#1
В userChrome.css. Пример

#context-ext-google-translate {-moz-box-ordinal-group:1!important;}
#UseAsProxy {-moz-box-ordinal-group:10!important;}
#context-ext-addon {-moz-box-ordinal-group:3!important;}
#context-copy {-moz-box-ordinal-group:4!important;}
#saveSelectionToFile {-moz-box-ordinal-group:5!important;}

Э, опоздал, но все же дополню:

скрытый текст
DOM Inspector + Custom Buttons c Attributes Inspector(как добавить кнопку - в шапке темы) - в помощь:
thumb.jpg 
Находим id или иной селектор нужного пункта и, если хотим скрыть, то создаем такой стиль в userChrome.css (создаем в папке профиля браузера папку chrome и в ней текстовый файл userChrome.css), либо в Stylish:

Выделить код

Код:

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
.textbox-contextmenu menuitem[label="Cut"] {
  display: none!important;
}

Для изменения порядка:

Выделить код

Код:

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

.textbox-contextmenu menuitem[label="Paste"] {
  -moz-box-ordinal-group: 1!important;
}
.textbox-contextmenu menuseparator:nth-child(1) { /* :nth-child() - используем для элементов, у которых нет уникальных индентификаторов, т.е. цифра 1 в скобках - это первый элемент menuseparator в .textbox-contextmenu */
  -moz-box-ordinal-group: 2!important;
}
.textbox-contextmenu menuitem[label="Cut"] {
  -moz-box-ordinal-group: 3!important;
}
.textbox-contextmenu menuitem[label="Copy"] {
  -moz-box-ordinal-group: 4!important;
}
/* и т.д.  */
/* Скорее всего, придется задать порядок для всех пунктов меню, даже если хотите поменять местами лишь несколько из них */

(строка с "@namespace" нужна лишь одна. В самом начале файла userChrome.css. Для Stylish'а - в каждом отдельном стиле.)

А с помощью Custom Buttons (например) можно и добавлять новые пункты в разные меню. Но это отдельная история.

25-05-2015 04:27:37
Да, и по стилям есть отдельный раздел. Остальные вопросы советую задавать в соответствующей теме.

turbot пишет

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
...
строка с "@namespace" нужна лишь одна. В самом начале файла userChrome.css.

Разреши спросить :blush:. Нужна зачем ?

villa7, turbot спасибо за ответы. вопрос задал тут, потому что тут же нашёл поиском закрытую давнюю тему того же вопроса, вот только там не было "ответов". нигде раньше не встречал упоминаний что файл то создавать нада самому(!).
думаю создание кнопок или прям новых пунктов мне не осилить(без справочника тут тёмный лес :cry:), ну хоть с присутствующими чтото прояснилось. верно понимаю что с помощью DOM Inspector можно узнать ID разных присутствующих пунктов? а где бе разжится может уже собранной таблицей/справочником по всем таким ID, для комбинирования скажем?(хочется добавить в адресную строку пункт "Paste&go in new tab"= как я понимаю это сумма присутствующих комманд newtab+paste & go)

Dumby пишет

Нужна зачем ?

А что, разве в userChrome она не нужна? :rolleyes: Тут иногда и без
@namespace xul url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
некоторые стили не срабатывают. Фих знает, почему. При том, что в исходном стиле нет конструкций типа xul|*.attr-value.theme-fg-color6.

rey пишет

верно понимаю

Не совсем. ID, класс, атрибуты - да узнаете.  А вот добавить - это уже яваскрипт и Custom Buttons. С этим, вон, Dumby (:P) мучайте, он знаток.

turbot пишет

А что, разве в userChrome она не нужна?

Мне кажется, что наличие её необходимости
ровно такое же, как и у любого другого стиля.

turbot пишет

Тут иногда и без
@namespace xul url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
некоторые стили не срабатывают.

У Егора стиль не работал именно из-за наличия
присутстувующей в userChrome.css строки
«@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");»

И как только он её изменил (считай удалил) — всё заработало.

Таковая строка, видимо, обозначает добровольное самоограничение,
что весь (!) userChrome.css-стиль будет применяться только к элементам с xul-namespace'ом.

Это нам надо ?

Dumby пишет

не работал именно из-за наличия

А, и впрямь... Не догадался проверить без. :dumb:

Это нам надо ?

Ну, если для них и делается, то почему бы и нет. А то вылезет, где не надо. :)

turbot пишет

Ну, если для них и делается, то почему бы и нет.

А завтра моя левая пятка спросит меня

Ой, добавила в userChrome.css

#urlbar .urlbar-input {
        background-color: lightgreen !important;
}
Но не работает. Что делать ?

И что мне ей ответить ?

Dumby
Ок, идею уловил.

левая пятка спросит меня

скрытый текст
Я бы ей ответил: "Научилась говорить - разберешься и что поправить." shuffle.gif

Dumby пишет

И что мне ей ответить ?

Нууу,

Выделить код

Код:

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
@namespace html url("http://www.w3.org/1999/xhtml");
#urlbar html|*.urlbar-input {
    background-color: lightgreen !important;
}

:D

спасибо за некоторые примеры приведенные тут. только мне как новичку ничего не понятно.. :(
поставил DOM Inspector, вобще не ясно как в нём чтото "найти" то что нужно. от turbot были неплохие примеры, но не понял как же указать в какое меню вставляешь команду или скрываешь? я непротив вобще "пересобрать" менюшки полностью, для собственного порядка команд, понять бы Как... когдато пользовался Oper'ой и там было весьма не сложно, а тут совсем завяз.
посмотрел Custom Buttons, штука интересная, но там совсем уже коды пошли, а значит ещё больший "лес" как их в меню вставить :cry:

rey пишет

как в нём чтото "найти"

turbot пишет

Custom Buttons c Attributes Inspector

же. Нажимаете кнопку Attributes Inspector'а, наводите на нужный элемент и ctrl+I (либо средней кнопкой мыши). DOM Inspector запустится с фокусом на этом элементе. Если нужно, чтобы менюшка не закрылась (после запуска DOM Inspector'а), то ctrl+shift+I (для менюшки урл-бара есть баг пока). Подробнее - в справке кнопки (пункт в ее контекстном меню).

27-05-2015 23:03:55

rey пишет

как их в меню вставить

Много готовых кнопок и примеров. Даже я бы мог сделать вам вашу

"Paste&go in new tab"

, но контекстное меню урбара не имеет id, а я так и не освоил getAnonymousElementByAttribute, и не знаю, как всунуть пункт в такое меню. Напишите свой запрос в тему по CB, подробно описав, что требуется, и кто-нибудь наверняка поможет.

turbot пишет

но контекстное меню урбара не имеет id, а я так и не освоил getAnonymousElementByAttribute, и не знаю, как всунуть пункт в такое меню.

Вот для примера "Вставить и искать" пункт контекстного меню адресной строки | Форум Mozilla Россия . Думаю - осилите.

lokiju
О, спасибо.

rey
В инициализацию любой кнопки:

скрытый текст

Выделить код

Код:

addEventListener("popupshowing", function(event) {
   const eltID = "urlbar-paste-and-go-in-newtab";
   var menupopup = event.originalTarget;
   var refChild = menupopup.getElementsByAttribute("oncommand", "gURLBar.select(); goDoCommand('cmd_paste'); gURLBar.handleCommand();")[0];
   var canPaste = refChild.getAttribute("disabled") == "true";
   var menuitem = document.getElementById(eltID);
   if (!menuitem) {
   var urlbarPasteAndSearch = function(event) {
         window.content.focus();
         BrowserOpenNewTabOrWindow(event); 
         gURLBar.select();
         goDoCommand('cmd_paste');
         setTimeout(()=> gURLBar.handleCommand(event), 50);
      };
      menuitem = document.createElement("menuitem");
      menuitem.id = eltID;
      menuitem.setAttribute("label", "Paste & Go in new tab");
      menuitem.addEventListener("command", urlbarPasteAndSearch, false);
      menupopup.insertBefore(menuitem, refChild.nextSibling);
   }
   menuitem.setAttribute("disabled", canPaste.toString());
}, false, document.getElementById("urlbar"));


Все спасибки - SendInfo

UPD: Поправил. Теперь значение адресной строки страницы, с которой осуществлялся поиск/переход, остается прежним. (Но фокус/выделение в адресной строке страницы, с которой осуществлялся поиск/переход, не снимается. Как убрать - пока не придумал). - придумал :)