Нажал, лишние пункты скрылись, понадобились по дефолту, ещё раз нажал. С запоминанием состояния.
Такая кнопка есть. Вот здесь смотрите.
Отсутствует
Ultima2m
Спасибо, но это немного не то, она удаляет везде, без разделения на странице, ссылке или картинке.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
но после перезапуска браузера они вновь появляются
А не должны. Попробуйте и здесь таймаут добавить:
setTimeout( function() { addEventListener("popupshowing", function() { ... }, false, document.getElementById("contentAreaContextMenu")); }, 1000);
Нажал, лишние пункты скрылись, понадобились по дефолту, ещё раз нажал. С запоминанием состояния.
Запоминание-то - не проблема, а вот листенер при выключении удалить - не получается что-то у меня. Голова не варит. Пятница... Спросите в теме CB.
сдвигается влево
А не должны. Но без ваших пунктов мне не проверить, а ставить - лень. Играйтесь с margin, как villa7 сказал.
Отредактировано turbot (31-07-2015 19:27:59)
Отсутствует
turbot
Добавил таймаут, заменив последнюю строку на
Кнопка сломалась, стала не активной.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7
setTimeout( function() { addEventListener("popupshowing", function() { // скроет пункты меню с перечисленныыми селекторами на кликабельных картинках, но оставит на просто картинках for(var menuitem1 of document.querySelectorAll('#context-copyimage-contents,#context-viewimage,#context-viewbgimage')) { menuitem1.hidden = !gContextMenu.onImage || gContextMenu.onLink; } // скроет пункты меню с перечисленныыми селекторами на кликабельных картинках, но оставит на просто ссылках for(var menuitem2 of document.querySelectorAll('#context-copylink,#context-openlink')) { menuitem2.hidden = !gContextMenu.onLink || gContextMenu.onImage; } // скроет пункты меню с перечисленныыми селекторами на картинках и ссылках, но они будут видны во всех остальных случаях for(var menuitem3 of document.querySelectorAll('#bla-bla-bla1,#bla-bla-bla2')) { menuitem3.hidden = gContextMenu.onLink || gContextMenu.onImage; } // скроет пункты меню с перечисленныыми селекторами везде, кроме меню тектовых полей for(var menuitem4 of document.querySelectorAll('#bla-bla-bla3,#bla-bla-bla4')) { menuitem4.hidden = !gContextMenu.onTextInput; } // и т.д. }, false, document.getElementById("contentAreaContextMenu")); }, 1000);
Отсутствует
А не должны. Но без ваших пунктов мне не проверить, а ставить - лень.
Ваш вариант работает отлично. Это я про общие биндинги в варианте villa7.
Там почему-то сдвигаются вообще все пункты меню без иконок ( в контекстном и даже в панели меню!)
Отредактировано Ultima2m (01-08-2015 08:41:12)
Отсутствует
Ultima2m
Выше я давал как регулировать для одного, а если без селектора то для всех будет одинаково.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Там почему-то сдвигаются вообще все пункты меню без иконок ( в контекстном и даже в панели меню!)
А, ну потому и сдвигаются, что иконки нет. Задайте им
/* пустая прозрачная иконка для менюитемов без иконки */ menuitem:not([image]) > .menu-iconic-left > .menu-iconic-icon, menu:not([image]) > .menu-iconic-left > .menu-iconic-icon { list-style-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAAjSURBVHjaYvz//z8DJYCJgUIwasCoAaMGDBYDAAAAAP//AwBjmgMdmAkTNwAAAABJRU5ErkJggg==')!important; -moz-image-region: auto!important; }
Отсутствует
Вот еще вопрос всплыл. Нужно удалить сепаратор.
Проблема в том, что у него нет ни ID, ни label
Отсутствует
Ultima2m
.small-separator {display:none;}
если нужно в конкретном меню удалить, то ставите перед этим селектор того меню.
Отредактировано villa7 (02-08-2015 14:14:03)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Нажал, лишние пункты скрылись, понадобились по дефолту, ещё раз нажал. С запоминанием состояния.
custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3E%u0421%u043A%u0440%u044B%u0442%u044C%20%u043F%u0443%u043D%u043A%u0442%u044B%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0433%u043E%20%u043C%u0435%u043D%u044E%20%u043D%u0430...%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAgcKAAIHCgGZ1Tq1AAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAHfSURBVHjanJMxaFNRFIa/80xeTVUKQahOOtRgF5Fgs3QqFYrdHByNSEDqpBQnl7wguLi62SJ0clQogRQnh0wO6SCF0kESNFXSpPJeysu9yTsONSGmGUovnOVwz7mX//t/8TzvMfAa+JTP51cKhcJt4AunO754nqdDjSQwAdRPM62iOOP6px1GwAGeAL+BtXw+33p0cJC72OsFgD9ciSgK0kftEPBV1Ad8Revied5g68tqNQusATvAUnx9fR/A5nJJoKhCWuFF5tXXtxw/7sSGv2Ws3QJ2gVmgZLLZJcAARSCtQq090dsEpF8xYEDhwsbGyofV1Wd3Go2tKWNutVz3R89x9HIYngtisejj9WvTf9x45f67G6go6mgwlkLC2vry3h5TnQ4AbdelODOD77oD8RRFHSU2TuCeCEG3ixuGAAQidEXG0jhBYbrZvDm/vd1LNJu0IGo4ThQ/PGS+UonOm84xHR3Q+Z/CcqmU7AsG1IBFIAQ+AykVdtqX9N7z90e/+hScEQoPjLVpY23NWLs4Vy5/nyuX9421d421u8ba2Xiz+/Cf2RRQGc3C5sLCm2+ZzNNwcjIaXu6GoVypVuPVVMqoaN+NwZmzMGzlM2Whf/MEBeDqaA7Glaj4ovLz7wCf8fmBPlRBDgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20if%20%28e.button%20%3D%3D%200%29%20%7B%20%0A%20%20%20%20pref.value%20%3D%20%21pref.value%3B%0A%20%20%7D%0A%7D%3B%0A%0Avar%20s%20%3D%20%27CB.hidemenuitemfor%27%3B%0Acbu.isPref%28s%2C%20false%29%3B%0Avar%20pref%20%3D%20Application.prefs.get%28s%29%3B%0Avar%20contextMenu%20%3D%20document.getElementById%28%22contentAreaContextMenu%22%29%3B%0A%0Avar%20listener%20%3D%20%7B%0A%20%20popupshowing%3A%20function%28%29%20%7B%0A%0A%20%20//%20%u0441%u043A%u0440%u043E%u0435%u0442%20%u043F%u0443%u043D%u043A%u0442%u044B%20%u043C%u0435%u043D%u044E%20%u0441%20%u043F%u0435%u0440%u0435%u0447%u0438%u0441%u043B%u0435%u043D%u043D%u044B%u044B%u043C%u0438%20%u0441%u0435%u043B%u0435%u043A%u0442%u043E%u0440%u0430%u043C%u0438%20%u043D%u0430%20%u043A%u043B%u0438%u043A%u0430%u0431%u0435%u043B%u044C%u043D%u044B%u0445%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0430%u0445%2C%20%u043D%u043E%20%u043E%u0441%u0442%u0430%u0432%u0438%u0442%20%u043D%u0430%20%u043F%u0440%u043E%u0441%u0442%u043E%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0430%u0445%0A%20%20for%28var%20menuitem1%20of%20contextMenu.querySelectorAll%28%27%23context-copyimage-contents%2C%23context-viewimage%2C%23context-viewbgimage%27%29%29%20%7B%0A%20%20%20%20menuitem1.hidden%20%3D%20%21gContextMenu.onImage%20%7C%7C%20gContextMenu.onLink%3B%20%0A%20%20%7D%0A%0A%20%20//%20%u0441%u043A%u0440%u043E%u0435%u0442%20%u043F%u0443%u043D%u043A%u0442%u044B%20%u043C%u0435%u043D%u044E%20%u0441%20%u043F%u0435%u0440%u0435%u0447%u0438%u0441%u043B%u0435%u043D%u043D%u044B%u044B%u043C%u0438%20%u0441%u0435%u043B%u0435%u043A%u0442%u043E%u0440%u0430%u043C%u0438%20%u043D%u0430%20%u043A%u043B%u0438%u043A%u0430%u0431%u0435%u043B%u044C%u043D%u044B%u0445%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0430%u0445%2C%20%u043D%u043E%20%u043E%u0441%u0442%u0430%u0432%u0438%u0442%20%u043D%u0430%20%u043F%u0440%u043E%u0441%u0442%u043E%20%u0441%u0441%u044B%u043B%u043A%u0430%u0445%0A%20%20for%28var%20menuitem2%20of%20contextMenu.querySelectorAll%28%27%23context-copylink%2C%23context-openlink%27%29%29%20%7B%0A%20%20%20%20menuitem2.hidden%20%3D%20%21gContextMenu.onLink%20%7C%7C%20gContextMenu.onImage%3B%0A%20%20%7D%0A%0A%20%20//%20%u0441%u043A%u0440%u043E%u0435%u0442%20%u043F%u0443%u043D%u043A%u0442%u044B%20%u043C%u0435%u043D%u044E%20%u0441%20%u043F%u0435%u0440%u0435%u0447%u0438%u0441%u043B%u0435%u043D%u043D%u044B%u044B%u043C%u0438%20%u0441%u0435%u043B%u0435%u043A%u0442%u043E%u0440%u0430%u043C%u0438%20%u043D%u0430%20%u043A%u0430%u0440%u0442%u0438%u043D%u043A%u0430%u0445%20%u0438%20%u0441%u0441%u044B%u043B%u043A%u0430%u0445%2C%20%u043D%u043E%20%u043E%u043D%u0438%20%u0431%u0443%u0434%u0443%u0442%20%u0432%u0438%u0434%u043D%u044B%20%u0432%u043E%20%u0432%u0441%u0435%u0445%20%u043E%u0441%u0442%u0430%u043B%u044C%u043D%u044B%u0445%20%u0441%u043B%u0443%u0447%u0430%u044F%u0445%0A%20%20for%28var%20menuitem3%20of%20contextMenu.querySelectorAll%28%27%23bla-bla-bla1%2C%23bla-bla-bla2%27%29%29%20%7B%0A%20%20%20%20menuitem3.hidden%20%3D%20gContextMenu.onLink%20%7C%7C%20gContextMenu.onImage%3B%0A%20%20%7D%0A%0A%20%20//%20%u0441%u043A%u0440%u043E%u0435%u0442%20%u043F%u0443%u043D%u043A%u0442%u044B%20%u043C%u0435%u043D%u044E%20%u0441%20%u043F%u0435%u0440%u0435%u0447%u0438%u0441%u043B%u0435%u043D%u043D%u044B%u044B%u043C%u0438%20%u0441%u0435%u043B%u0435%u043A%u0442%u043E%u0440%u0430%u043C%u0438%20%u0432%u0435%u0437%u0434%u0435%2C%20%u043A%u0440%u043E%u043C%u0435%20%u043C%u0435%u043D%u044E%20%u0442%u0435%u043A%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u0435%u0439%0A%20%20for%28var%20menuitem4%20of%20contextMenu.querySelectorAll%28%27%23bla-bla-bla3%2C%23bla-bla-bla4%27%29%29%20%7B%0A%20%20%20%20menuitem4.hidden%20%3D%20%21gContextMenu.onTextInput%3B%0A%20%20%7D%0A%0A%20%20//%20%u0438%20%u0442.%u0434.%0A%0A%20%20%7D%0A%7D%3B%0A%0Afunction%20toggleEnable%28%29%20%7B%0A%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20icon.style.filter%20%3D%20pref.value%20%3F%20%27%27%20%3A%20%27grayscale%281%29%20opacity%28.5%29%27%3B%0A%20%20self.checked%20%3D%20%20pref.value%20%3F%20%27true%27%20%3A%20%27%27%3B%0A%20%20var%20func%20%3D%20pref.value%20%3F%20addEventListener%20%3A%20removeEventListener%3B%0A%20%20func%28%22popupshowing%22%2C%20listener.popupshowing%2C%20false%2C%20contextMenu%29%3B%0A%7D%3B%0AtoggleEnable%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleEnable%2C%20false%29%3B%0AaddDestructor%28function%28%29%20gPrefService.removeObserver%28s%2C%20toggleEnable%29%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Спасибо Dumby за помощь и bunda1 за скопипащеные части.
Отсутствует
turbot
Отлично! Давно мечтал. А то жмякнешь по картинке, а там портянка на пол экрана, а нужно то всего 4 пункта. Спасибо большое!
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
turbot
Блин, засада какая. Твоя кнопка "Скрытия пунктов меню" на чистом профиле работает как часы, а в рабочем браузере после каждой перезагрузке приходится кнопку вкл/выкл делать чтобы сработала. Может есть какие идеи?
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7
А где кнопка расположена? А то. Хотя у меня и на нем, после рестарта, работает. Выход, видимо, тот же: таймаут. Я немного в затруднении, куда его лучше впиндюрить, но попробуйте в
setTimeout(()=>func("popupshowing", listener.popupshowing, false, contextMenu),300);
увеличивайте значение если не поможет (сам не могу проверить, так нет этой проблемы).
Отсутствует
turbot
С таймаутом срабатывает нормально, спасибо. Копался, хотел найти причину, удалял всё, расширения, кнопки, плагины, букмарклеты, и даже стили, сбросил prefs.js, всё удалено и всё равно не запускался. Осталось только папки и файлы из профиля удалять. Просто не понятно почему не запускался. Но теперь работает и ладно. Мож потом как нибудь доберусь до истины Спасибо.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Есть такая задача.
Неактивный пункт меню "Выделить всё" скрывается скриптом
menuitem[disabled="true"] {display: none!important;}
но сепаратор над ним остается. Как его видимость привязать к пункту меню или вообще скрыть?
Пункт меню "Выделить всё" не имеет ID
а сепаратор вообще обезличенный
xul:menuseparator [202.083×6]
namespaceURI: XUL
margin: 0
border: 3px 0 1px 0
padding: 0 0 0 33px
Отсутствует
Ultima2m
Во первых этим кодом вы скрываете глобально не активные пункты, а не только Выделить всё. Во вторых, сепаратор какой-то странный с бордюром, может стилем делали?
Так попробуйте
или так
menuseparator[border="3px 0 1px 0"] {-moz-appearance: none !important; display: none !important;}
Отредактировано villa7 (08-08-2015 15:01:41)
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
villa7,
Насчет глобальности я в курсе, так и нужно.
Сепаратор этот нехороший в меню поиска, да и в урл-баре такие же.
Ваш первый скрипт убирает их все (что и понятно)
но пустое место остается и вид получается специфический.
Второй код не работает.
Я пробовал как-то так сделать
contextMenu.removeBefore( menuseparator, document.getElementBylabel("Выделить всё"));
или
contextMenu.removeBefore[label="Выделить всё"] {display: none!important;}
Путем, так сказать, научного тыка. Фокус не удался
Отредактировано Ultima2m (08-08-2015 15:23:48)
Отсутствует
Пункт меню "Выделить всё" не имеет ID
а сепаратор вообще обезличенный
Вот так можно сделать глобально для "Выделить всё"
menuitem[cmd="cmd_delete"][disabled="true"] + menuseparator, menuitem[cmd="cmd_selectAll"][disabled="true"], menuitem[cmd="cmd_selectAll"][disabled="true"] + menuseparator, menuitem[command="cmd_delete"][disabled="true"] + menuseparator, menuitem[command="cmd_selectAll"][disabled="true"], menuitem[command="cmd_selectAll"][disabled="true"] + menuseparator { display: none !important; }
сепаратор какой-то странный с бордюром
Это от ОС зависит (у меня также), если сделать menuseparator {-moz-appearance: none !important;} то будет использоваться стиль браузера
Отредактировано Vitaliy V. (08-08-2015 15:49:11)
Отсутствует
Я пробовал как-то так сделать
contextMenu.removeBefore( menuseparator, document.getElementBylabel("Выделить всё"));
или
contextMenu.removeBefore[label="Выделить всё"] {display: none!important;}
Вы что, пытаетесь скрестить яваскрипт с css?
К тому же, даже в случае яваскрипта, - это неправильный синтаксис.
Отсутствует
Vitaliy V.
Спасибо.
Я оставил только
menuitem[cmd="cmd_delete"][disabled="true"] + menuseparator
{
display: none !important;
}
Вроде нормально все
turbot
Зато какая идея! Продаю.
Отсутствует