Как-то так, наверно
скрытый текстВыделить кодКод:
(async n => { var menuitem = n("menu_pageInfo").cloneNode(false); menuitem.id = "context-" + menuitem.id; for(var attr of ["key", "command"]) menuitem.removeAttribute(attr); menuitem.setAttribute("oncommand", 'BrowserPageInfo(null, "permTab");'); n("context-inspect-a11y").before(menuitem); })(id => document.getElementById(id));
Благодарю! Теперь вообще класс!
Отсутствует
vv07
Что за странная реакция? При чём тут взаимопомощь?
Я на полном серьёзе говорю, что объяснить ВСЁ, что произошло
не представляется возможным. Это нереальный объём.
Тут и от версии к версии, зачастую, по нескольку раз,
даже что-то простое обсуждается и всё равно без большого успеха.
А ты говоришь 54-78. Это прыжок через про́пасть.
Отсутствует
Dumby
Прошу извинить тогда. Но неужели нет решения?
Или Custom Buttons мертвое расширение?
Млин, ну надо то, несколько кнопок.
Мне все эти красявости по боку.
Функционал главное.
Привык к удобству кнопок этих
Отсутствует
vv07
В этом посте есть все что вам нужно.
https://forum.mozilla-russia.org/viewto … 05#p792105
Отсутствует
_zt
custom_buttons-0.0.7.0.0.17-fx-paxmod
Битность не может повлиять? У меня 64 битная
PS Сработал другой код "Remove or revisit support for data:-URLs in the webRequest API (remove/replace WebRequestContent.js)
Конфиг с поправкой"
И даже мои старые кнопки стали приживаться. Правда не работают, или криво работают.
Но тут надеюсь очень, мне помогут уже))))
Отредактировано vv07 (13-06-2021 14:00:18)
Отсутствует
Garalf
Большая часть ваших кнопок встала на Ура и дала мне шанс для перехода на новые версии FF
Осталось упросить спецов, поправить код для некоторых кнопок, которые некорректно работают.
Ну это реально возможно. Мне помогали с правкой кода ранее. Так что все шансы на обновление
любимого огнелиса
Отсутствует
Уважаемый Dumby Теперь личная просьба к вам, как автору кнопок ( я так понял)
У вас есть очень замечательные кнопки
Compact Menu https://forum.mozilla-russia.org/viewtopic.php?pid=477384#p477384
Extension List https://forum.mozilla-russia.org/viewtopic.php?pid=488446#p488446
Эта вроде не ваша, но за нее отдельная благодарность будет. Она фактически решит проблему, отсутствия Fast Dial Кнопка вообще огонь.
Open URLs https://forum.mozilla-russia.org/viewtopic.php?pid=555930#p555930 Отлично работала на старых версиях лиса
Отсутствует
Как бы убрать #toggle_PersonalToolbar там ,где мне надо? Там id="toolbar-context-menu" везде одинаковый. И дотянуть до Nav-bar ,к примеру, ну никак...
Видимо, зависит от того, где надо.
На скрине, как я понимаю, на виджетах, создаваемых для WebExtensions.
Можно, например, так попробовать
#toolbar-context-menu > menuitem.customize-context-manageExtension:not([hidden]) ~ #toggle_PersonalToolbar { display: none !important; }
vv07
Хорошо бы писать, что кнопка делала.
Не столько вообще, а, скорее, что делала для тебя.
В том смысле, что важно, что не очень, а что совсем не использовалось.
Это так, примечание общего характера.
Вот, скажем, Open URLs, так там написано, что для Thunderbird
Допустим, запишу так, подойдёт?
/*Initialization Code*/ (n => { var inBackground = false; var data = [{ lab: "Google", url: "https://www.google.com", img: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY1MjI5QkVERDU1MjExRTBCREIxRkM2NDg5MzRDQTQyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY1MjI5QkVFRDU1MjExRTBCREIxRkM2NDg5MzRDQTQyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjUyMjlCRUJENTUyMTFFMEJEQjFGQzY0ODkzNENBNDIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjUyMjlCRUNENTUyMTFFMEJEQjFGQzY0ODkzNENBNDIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz65gakZAAAIYUlEQVR42rxY628U1xX/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" }, { lab: "Форум Mozilla", url: "https://forum.mozilla-russia.org", img: "data:image/png;base64,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" }, null, { lab: "Test", url: "data:text/plain;charset=utf-8,Params", img: "chrome://browser/content/robot.ico", params: { userContextId: 1, get index() { return gBrowser.selectedTab._tPos + 1 }, inBackground: !inBackground, } }]; this.type = "menu"; var popup = n("menupopup"), dummy = n("menuitem"); dummy.render = () => { dummy.remove(); data.forEach((o, ind) => { if (!o) return popup.append(n("menuseparator")); var menuitem = n("menuitem"); menuitem.setAttribute("label", o.lab || o.url); if (o.img) menuitem.className = "menuitem-iconic", menuitem.setAttribute("image", o.img); menuitem.ind = ind; popup.append(menuitem); }); popup.setAttribute("oncommand", "tab(event.target.ind);"); popup.tab = ind => { var {url, params} = data[ind]; var tab = gBrowser.addTrustedTab(url, params); if (!(params?.inBackground || inBackground)) gBrowser.selectedTab = tab; } } popup.append(dummy); this.prepend(popup); //this.onmouseover = () => this.open = true; this.removeAttribute("tooltiptext"); var tt = this.appendChild(n("box")).appendChild(n("tooltip")); tt.setAttribute("onpopupshowing", "return !(parentNode.parentNode.open = true);"); this.setAttribute("tooltip", tt.id = _id + "-tooltip"); })(nn => document.createXULElement(nn));
/*Initialization Code*/ (this.type != "menu" && (this.type = "menu") && !this.hasAttribute("is")) || (move => { if (this.parentNode.nodeName == "toolbarpaletteitem") return; var bar = document.getElementById("main-menubar"); var menupopup = document.createXULElement("menupopup"); this.prepend(menupopup); move(bar, menupopup); addDestructor(() => move(menupopup, bar)); })((from, to) => Array.from(from.children).forEach(child => { var popup = child.querySelector(":scope > menupopup"); popup.remove(); child.textContent = child.renderedOnce = ""; to.append(child); child.render(); child.append(popup); }));
Отсутствует
Dumby
Благодарю за идею ! Сразу со всех ненужных popup
#toolbar-context-menu > menuitem.customize-context-removeFromToolbar:not([hidden]) ~ #toggle_PersonalToolbar {
display: none !important;
}
Отсутствует
Dumby
Спасибо Дружище!
Привередничать не буду
Хотя если честно, то в старой версии Compact Menu, с иконками симпатичнее было
Отредактировано vv07 (14-06-2021 08:13:36)
Отсутствует
Dumby
Как бы этот код в ini запихать? Раньше он просто в коде был , но кнопка прокси изменилась...Короче, отмена ни отмена, код то уже сработал...
AddonManager.getAddonByID(id).then(
addon => addon[
addon.userDisabled ? "enable" : "disable"
]({allowSystemAddons: true}),
Cu.reportError
)
Сама кнопка прокси:
(ps => { this._handleClick = () => Services.prompt.confirm(null, "ВНИМАНИЕ !", "Прокси серверы : Включить / Выключить ?") && ps.setIntPref(s, ps.getIntPref(s, 2) ? 0 : 2); var s = "network.proxy.type"; var toggleImage = val => { this.icon.src = (val = ps.getIntPref(s, 2)) ? this.image : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFklEQVR42mO0DwpKaG9vL2VmZmb8+/fvPwY84P///2DMwcHBcuHChZcp4eE5jJeePn2hIyUl/uDTJwZuLi4GFhYWBmZsmqH073//GD5+/MigIijIEJmTM4Px1Z8/H86dP8/vYWrKQAoAuSS1omIp46u/fz9cunSJ38XQkCQDvgINyCouXsL49v//D+cvXCDZgBe/fzOUl5cvYfwMNODA8eP8vlZW5BnwDWjAvhMn+H0sLUky4Mn37wzV1dUQAw6fPcvvbmJCkgEPPn9mqK+vX8L4E2QAGWFw5/17hubm5iWMv4AGnL55k99aQ4MkA26/e8fQ0dGxlPHxt28vZDg5xUGCf4H4JxD/AOI/f/8y/AMmmt/AwAJhYCplYGRkZPjz5w9YnJeXFxSICxhN3N3zSkpK8kH6371791UOCHR0dIR+/frFAMIgDaBE8+rVq78XL158BBT7xMPDw/f69evvrXV1pYxAjSDMA8R8wWlphfn5+SlAM/iB6R1sI0jz169fwfjs2bN3m5qaWu+fObMO6uAvjDA/uUdFle1YurQTxP4KxL+AmAnkFSAGuoxBREiIQRDIfvjlyxcFXl5QnF9hgNoOAUJCdsuWL1/m4+YmzQU14BdUig2IWYD4LTAsgDn31KT6+hAg9zGqARAgJ6OvH2Fubm6hrq4uC/QrFzDA/r958+Yz0P/3Dx8+fOjPy5drgepewzQAAJP3DZ3PnU32AAAAAElFTkSuQmCC"; this.tooltipText = val ? 'Автопрокси' : 'Без прокси'; BrowserReload(); cbu.setPrefs("network.proxy.autoconfig_url", val ? "resource://chrome/proxy/proxy2.pac" : "resource://chrome/proxy/proxy2.pac"); cbu.setPrefs("intl.accept_languages", val ? "fr" : "ru"); cbu.setPrefs("browser.zoom.full", val ? true : true); cbu.setPrefs("media.autoplay.default", val ? 5 : 5); } toggleImage(); ps.addObserver(s, toggleImage, false); addDestructor(() => ps.removeObserver(s, toggleImage)); })(Services.prefs); this.oncontextmenu =e=> { e.button && !e.ctrlKey && e.preventDefault() };
Отредактировано ВВП (14-06-2021 13:36:16)
Отсутствует
в старой версии Compact Menu, с иконками симпатичнее было
Вот об этом я и говорю, что описание должно быть персонализированным.
Оказывается, возможность исключить пункты не важна,
а возможность задать иконки — важна (хотя в кнопке по ссылке
ничего подобного нет, это чем-то другим у тебя было сделано).
Обнаружились проблемы при работе Compact Menu. В ряде случаев, происходит такое
Хмм, странно, не вижу такого.
Нужен STR (шаги по воспроизводству), типа делай раз, делай два, делай три..
Иначе говоря, описание некой последовательности действий, проделав которые у себя,
я смогу увидеть проблему, то есть получить то, что демонстрирует приведённый скриншот.
Но косяк (другой) есть. Всё-таки, после перемещения #bookmarksMenu,
без пересборки _placesView портится контекстное меню его закладок,
так и не понятно почему.
Новая версия. Заодно, объект {"id": "icon"}, куда вписывать свои иконки.
this.parentNode.nodeName == "toolbarpaletteitem" || (icons => { this.type = "menu"; var bar = document.getElementById("main-menubar"); var menupopup = document.createXULElement("menupopup"); menupopup.toggleAttribute("context"); this.prepend(menupopup); var move = (from, to, ico) => { from.querySelector("#bookmarksMenu")._placesView?.uninit(); for(var menu of Array.from(from.children)) { var popup = menu.menupopup; popup.remove(); menu.textContent = menu.renderedOnce = ""; if (ico) { var img = icons[menu.id]; if (img) menu.className = "menu-iconic", menu.setAttribute("image", img); } else menu.removeAttribute("class"), menu.removeAttribute("image"); to.append(menu); menu.render(); menu.append(popup); } } move(bar, menupopup, true); addDestructor(() => move(menupopup, bar)); })({ "file-menu": "chrome://browser/content/robot.ico", "edit-menu": "chrome://browser/skin/preferences/face-smile.svg", "view-menu": "chrome://browser/skin/preferences/face-sad.svg", "history-menu": "chrome://browser/content/robot.ico", "bookmarksMenu": "chrome://browser/skin/preferences/face-smile.svg", "tools-menu": "chrome://browser/skin/preferences/face-sad.svg", "helpMenu": "chrome://browser/content/robot.ico" });
Раньше он просто в коде был
Ну, я же не в курсе включить или выключить.
Раз был, смотри сам.
… this._handleClick = () => { var direct = ps.getIntPref(s) == 0; var msg = `Прокси серверы : В${direct ? "" : "ы"}ключить ?`; if (!Services.prompt.confirm(null, "ВНИМАНИЕ !", msg)) return; ps.setIntPref(s, direct ? 2 : 0); var method = `${direct ? "dis" : "en"}able`; AddonManager.getAddonByID("{acf99872-d701-4863-adc2-cdda1163aa34}") .then(addon => addon[method](), Cu.reportError); }
Отсутствует
Dumby
Спасибо большое. Работает.
Научите пожалуйста, как делать тут?
"file-menu": "chrome://browser/content/robot.ico",
"edit-menu": "chrome://browser/skin/preferences/face-smile.svg",
"view-menu": "chrome://browser/skin/preferences/face-sad.svg",
"history-menu": "chrome://browser/content/robot.ico",
"bookmarksMenu": "chrome://browser/skin/preferences/face-smile.svg",
"tools-menu": "chrome://browser/skin/preferences/face-sad.svg",
"helpMenu": "chrome://browser/content/robot.ico"
Что бы свои иконки поставить. И да, иконки отображаются, но у меня таких нет на компе вообще))))
PS на старой кнопке вот так все
Отредактировано vv07 (15-06-2021 16:31:15)
Отсутствует
Dumby
Ну, я же не в курсе включить или выключить.
Все в елочку .dis и En -поменял .Класс! Аддон времени вкл вместе с прокси. Класс !
Последняя шняга. Чертов popup на кнопке Undo Close Tab. Стилем не могу убрать(убирается на всех кнопках) . В самой кнопке - стремно...
Отредактировано ВВП (15-06-2021 14:18:23)
Отсутствует
Научите пожалуйста, как делать тут?
Что бы свои иконки поставить.
Нужно вписать (заменить на свой) адрес ссылки на файл иконки.
Самое простое — по протоколу file:
Жмём Ctrl+O, выбираем нужное изображение,
копируем из адресной строки ссылку на открывшееся изображение,
и вписываем.
Можно по протоколу data: (всё своё ношу с собой)
Тут, для вэб-человеков, говорят, есть онлайн-кодировщики,
можно поискать.
Или прямо в CB-редакторе некоторые конвертировали
кнопками [Обзор…] и [⇒ base64] и копированием получившейся
ссылки с <menulist>'а (слева от них).
Или, вот у меня есть старая, крайне аскетичная кнопка конвертации,
нажал, выбрал, и всё, в буфере обмена base64, остаётся только вставить.
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%3E64%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AIAQ/wCAEf8AgA//AIAR/wCAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AgBX/AIAVAAAAAAAAAAD/AIAo/wCA//8AgP//AID//wCA//8AgP//AIAoAAAAAAAAAAAAAAAAAAAAAP8AgBL/AID//wCA//8AgA3/AIAL/wCA//8AgP//AID//wCA//8AgP//AID//wCA//8AgBAAAAAAAAAAAAAAAAD/AIAR/wCA//8AgP//AIAK/wCACv8AgP//AID//wCAIf8AgAX/AIAh/wCA//8AgP//AIAQAAAAAAAAAAAAAAAA/wCACv8AgP//AID//wCAB/8AgAf/AID//wCA//8AgAUAAAAA/wCABf8AgP//AID//wCACgAAAAD/AIAQ/wCADP8AgCH/AID//wCA//8AgAf/AIAH/wCA//8AgP//AIAh/wCABf8AgCH/AID//wCA//8AgAv/AIAh/wCA//8AgP//AID//wCA//8AgP//AIAH/wCAB/8AgP//AID//wCA//8AgP//AID//wCA//8AgP//AIAg/wCA//8AgP//AID//wCA//8AgP//AID//wCAB/8AgAf/AID//wCA//8AgP//AID//wCA//8AgP//AIAh/wCAC/8AgP//AID//wCAHP8AgBz/AID//wCA//8AgAf/AIAH/wCA//8AgP//AIAh/wCACf8AgA7/AIAMAAAAAP8AgAj/AID//wCA//8AgAP/AIAD/wCA//8AgP//AIAH/wCAB/8AgP//AID//wCABQAAAAAAAAAA/wCADf8AgAr/AIAL/wCA//8AgP//AIAH/wCAB/8AgP//AID//wCAB/8AgAr/AID//wCA//8AgCH/AIAH/wCAJf8AgP//AID//wCAI/8AgP//AID//wCAB/8AgAf/AID//wCA//8AgAf/AIAL/wCA//8AgP//AID//wCA//8AgP//AID//wCA//8AgCT/AID//wCA//8AgAr/AIAK/wCA//8AgP//AIAKAAAAAP8AgCj/AID//wCA//8AgP//AID//wCA//8AgCP/AIAM/wCA//8AgP//AIAN/wCADf8AgP//AID//wCADQAAAAAAAAAA/wCAEP8AgBH/AIAP/wCAEf8AgBAAAAAAAAAAAP8AgBT/AIAVAAAAAAAAAAD/AIAV/wCAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQcH5rEGA8KxBAHCsQQBwrEEIQKxBAACsQQAArEEAAKxBAQCsQQwArEEAAKxBAACsQYAArEHBmaxB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20reader%2C%20picker%20%3D%20makeFilePicker%28%29%3B%0Apicker.init%28window%2C%20%22%22%2C%20picker.modeOpen%29%3B%0Apicker.open%28async%20res%20%3D%3E%20res%20%3D%3D%20picker.returnOK%20%26%26%20%28%0A%09%28reader%20%3D%20new%20FileReader%28%29%29.onload%20%3D%20%28%29%20%3D%3E%20gClipboard.write%28reader.result%29%2C%0A%09reader.readAsDataURL%28await%20File.createFromNsIFile%28picker.file%29%29%0A%29%29%3B%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
Есть только вопрос. У меня ссылок много очень, нельзя ли как то сделать, что бы использовать две таких кнопки одновременно? Что бы работали параллельно и независимо, а то ставлю две кнопки, но одни дублируют друг, друга
Непонятно. Клонируешь кнопок сколько угодно,
и редактируешь в каждой массив объектов data.
Вот, например, поставь эту.
Работает ли параллельно и независимо?
Дублирует ли что-нибудь?
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%u0443%u0440%u043B%u044B%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmMzP/ZjMz/2YzM/9mMzP/ZjMz/2YzM/9mMzP/ZjMz/2YzM/9mMzP/ZjMz/2YzM/9mMzP/ZjMz/2YzM/9mMzP/ZjMz//+ZAP//mQD//5kA//+ZAP//mQD//5kA//+ZAP//mQD//5kA//+ZAP//mQD//5kA//+ZAP//mQD/ZjMz/2YzM///mQD//+K0///itP//4rT//+K0///itP//4rT//+K0///itP//4rT//+K0///itP//4rT//5kA/2YzM/9mMzP//5kA///itP///////////////////////////////////////////////////////+K0//+ZAP9mMzP/ZjMz//+ZAP//4rT////////////////////////////////////////////////////////itP//mQD/ZjMz/2YzM///mQD//+K0////////////////////////////////////////////////////////4rT//5kA/2YzM/9mMzP//5kA///itP///////////////////////////////////////////////////////+K0//+ZAP9mMzP/ZjMz//+ZAP//4rT//////////////////////5lmZv+ZZmb////////////////////////itP//mQD/ZjMz/2YzM///mQD//+K0/////////////////5lmZv+ZZmb/mWZm/5lmZv//////////////////4rT//5kA/2YzM/9mMzP//5kA///itP///////////5lmZv+ZZmb/mWZm/5lmZv+ZZmb/mWZm/////////////+K0//+ZAP9mMzP/ZjMz//+ZAP//4rT////////////////////////////////////////////////////////itP//mQD/ZjMz/2YzM///mQD//+K0////////////////////////////////////////////////////////4rT//5kA/2YzM/9mMzP//5kA///itP///////////////////////////////////////////////////////+K0//+ZAP9mMzP/ZjMz//+ZAP//4rT//+K0///itP//4rT//+K0///itP//4rT//+K0///itP//4rT//+K0///itP//mQD/ZjMz/2YzM///mQD//5kA//+ZAP//mQD//5kA//+ZAP//mQD//5kA//+ZAP//mQD//5kA//+ZAP//mQD//5kA/2YzM/9mMzP/ZjMz/2YzM/9mMzP/ZjMz/2YzM/9mMzP/ZjMz/2YzM/9mMzP/ZjMz/2YzM/9mMzP/ZjMz/2YzM/9mMzP/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B%28n%20%3D%3E%20%7B%0A%09var%20inBackground%20%3D%20false%3B%0A%09var%20data%20%3D%20%5B%7B%0A%09%09lab%3A%20%22example.com%22%2C%0A%09%09url%3A%20%22https%3A//example.com%22%2C%0A%09%09img%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tv///wAAZv8AAAD/AAAA/wAAAP8AAAD/25A6/wBmtv+2ZgD/////////////////AGa2/7ZmAP///////////7b///86AGb//9uQ///////////////////////b////OjqQ///bkP//////kNv//2YAOv///7b///////////+2////OgBm///bkP///////////////////////////2a2//+QOgD/2//b/wA6kP//tmb/////////////////tv///zoAZv//25D/////////////////////////////////AGa2/2ZmZv+QOgD////b/////////////////7b///8AAGb/AAAA/wAAAP8AAAD/ZgAA////tv///////////7b///86AGb//9uQ//////////////////////+2////OgBm///bkP////////////////////////////////86kNv/Ojo6/7ZmAP//////////////////////tv///zoAZv//25D///////////////////////////+Q2///kDo6////2/8AZrb//7Zm/////////////////7b///86AGb//9uQ////////////////////////////AGa2//+2Zv//////kNv//5A6Ov///9v///////////+2////AABm/wAAAP8AAAD/AAAA/wAAAP//tmb/Zrb//5A6AP///9v///////////8AZrb/25A6//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxB//+sQQ%3D%3D%22%0A%09%7D%2C%0A%09null%2C%20%7B%0A%09%09lab%3A%20%22%u041E%20%u0441%u0431%u043E%u0440%u043E%u0447%u043D%u043E%u0439%20%u043A%u043E%u043D%u0444%u0438%u0433%u0443%u0440%u0430%u0446%u0438%u0438%22%2C%0A%09%09url%3A%20%22about%3Abuildconfig%22%2C%0A%09%09img%3A%20%22chrome%3A//devtools/skin/images/settings.svg%22%0A%09%7D%2C%20%7B%0A%09%09lab%3A%20%22%u0411%u0438%u0431%u043B%u0438%u043E%u0442%u0435%u043A%u0430%22%2C%0A%09%09url%3A%20%22chrome%3A//browser/content/places/places.xhtml%22%2C%0A%09%09img%3A%20%22data%3Aimage/png%3Bcbfc%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACU0lEQVQ4jZWSX0hTYRjGn7lmSV120V1JIqHQza6ELgyyCKKIHEwI0gJrSqk7xjmUbt8kCVRcQRgjVNJYhBdRhF55q0aLSjLL/TmKc+qcO8eztUkRTxdi5J8MX/jBC9/7e3nhe4B/l+n7fVSnPbgCwLTD3PalN+FoxotXmQ681O7i8G59U7oFTn66McVA1ddUC27t6oq4QEHWizdcHSBXB5hpx2tN4Mh/RSGQozchX/dA5odrofUFfF85ZXhwW29CvhDI2SDpLpQZAo0rAp0rAv50G4YYqAwx4yeNO2tk/GSgMpRuw9CKgF8X6DAEGjUXTkJ34zFH7SEuelNM9/MPmkQm69fQJG54i7UbHLUHNTceIuxEoeZGL8fsERo95JJjZ4wecqwirLnRPduAAvissAQlFCVceMZR+wyTXeRc1fYku8iRS2rChT5VwjFRij0AYPJZYYnU4fhyM14w1v6T0Vpyunwjc/VkrOPHcjOeByUU+ayw/P21Jp8VlriMmxw+Nc2YIIPnNhJtJYdOhBdlXN8sAwBsgDmu4B7f2eOMOMjJMjJ0mQxWrPVqLTlSvrCoQNgA89YMADlLCvo5WZelqpAzgvx41eC4I8UZQUYkctyRiit4IrApCwAwUYMDiWYMU1XIsfJk1ovxBQW+eRnd2QemzwzYdYakX3EFg4NnsXfLgrAThQkP3mYfmSbmZfSqEs50liCvswR5ESfOz8t4mu3K/bLswYhav02sJ2pwKCqjVW3ABVGKfaIYuTbAbAPMohi5faexf7YRF6MyWr9V4+C69xvjXKoSQWwbTQAAAABJRU5ErkJggg%3D%3D%22%0A%09%7D%5D%3B%0A%0A%09this.type%20%3D%20%22menu%22%3B%0A%09var%20popup%20%3D%20n%28%22menupopup%22%29%2C%20dummy%20%3D%20n%28%22menuitem%22%29%3B%0A%09popup.toggleAttribute%28%22context%22%29%3B%0A%09dummy.render%20%3D%20%28%29%20%3D%3E%20%7B%0A%09%09dummy.remove%28%29%3B%0A%09%09data.forEach%28%28o%2C%20ind%29%20%3D%3E%20%7B%0A%09%09%09if%20%28%21o%29%20return%20popup.append%28n%28%22menuseparator%22%29%29%3B%0A%09%09%09var%20menuitem%20%3D%20n%28%22menuitem%22%29%3B%0A%09%09%09menuitem.setAttribute%28%22label%22%2C%20o.lab%20%7C%7C%20o.url%29%3B%0A%09%09%09if%20%28o.img%29%0A%09%09%09%09menuitem.className%20%3D%20%22menuitem-iconic%22%2C%0A%09%09%09%09menuitem.setAttribute%28%22image%22%2C%20o.img%29%3B%0A%09%09%09menuitem.ind%20%3D%20ind%3B%0A%09%09%09popup.append%28menuitem%29%3B%0A%09%09%7D%29%3B%0A%09%09popup.setAttribute%28%22oncommand%22%2C%20%22tab%28event.target.ind%29%3B%22%29%3B%0A%09%09popup.tab%20%3D%20ind%20%3D%3E%20%7B%0A%09%09%09var%20%7Burl%2C%20params%7D%20%3D%20data%5Bind%5D%3B%0A%09%09%09var%20tab%20%3D%20gBrowser.addTrustedTab%28url%2C%20params%29%3B%0A%09%09%09if%20%28%21%28params%3F.inBackground%20%7C%7C%20inBackground%29%29%20gBrowser.selectedTab%20%3D%20tab%3B%0A%09%09%7D%0A%09%7D%0A%09popup.append%28dummy%29%3B%0A%09this.prepend%28popup%29%3B%0A%0A%09//this.onmouseover%20%3D%20%28%29%20%3D%3E%20this.open%20%3D%20true%3B%0A%0A%09this.removeAttribute%28%22tooltiptext%22%29%3B%0A%09var%20tt%20%3D%20this.appendChild%28n%28%22box%22%29%29.appendChild%28n%28%22tooltip%22%29%29%3B%0A%09tt.setAttribute%28%22onpopupshowing%22%2C%20%22return%20%21%28parentNode.parentNode.open%20%3D%20true%29%3B%22%29%3B%0A%09this.setAttribute%28%22tooltip%22%2C%20tt.id%20%3D%20_id%20+%20%22-tooltip%22%29%3B%0A%0A%7D%29%28nn%20%3D%3E%20document.createXULElement%28nn%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
В самой кнопке - стремно...
Понимаю. Но не обязательно же лезть в сам код.
Можно просто добавить в конец что-то типа
addEventListener("contextmenu", e => !this.disabled || e.ctrlKey || e.shiftKey || e.preventDefault(), false, this);
Отсутствует
А кнопка, та что для base64, ее очень сложно для ucf сделать, можете адаптировать?
Да вроде не сложно, хотелось бы думать
(async self => CustomizableUI.createWidget(self = { label: "64", tooltiptext: "64", id: "ucf-fileToBase64", localized: false, onCreated(btn) { btn._handleClick = this.pick; btn.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AIAQ/wCAEf8AgA//AIAR/wCAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AgBX/AIAVAAAAAAAAAAD/AIAo/wCA//8AgP//AID//wCA//8AgP//AIAoAAAAAAAAAAAAAAAAAAAAAP8AgBL/AID//wCA//8AgA3/AIAL/wCA//8AgP//AID//wCA//8AgP//AID//wCA//8AgBAAAAAAAAAAAAAAAAD/AIAR/wCA//8AgP//AIAK/wCACv8AgP//AID//wCAIf8AgAX/AIAh/wCA//8AgP//AIAQAAAAAAAAAAAAAAAA/wCACv8AgP//AID//wCAB/8AgAf/AID//wCA//8AgAUAAAAA/wCABf8AgP//AID//wCACgAAAAD/AIAQ/wCADP8AgCH/AID//wCA//8AgAf/AIAH/wCA//8AgP//AIAh/wCABf8AgCH/AID//wCA//8AgAv/AIAh/wCA//8AgP//AID//wCA//8AgP//AIAH/wCAB/8AgP//AID//wCA//8AgP//AID//wCA//8AgP//AIAg/wCA//8AgP//AID//wCA//8AgP//AID//wCAB/8AgAf/AID//wCA//8AgP//AID//wCA//8AgP//AIAh/wCAC/8AgP//AID//wCAHP8AgBz/AID//wCA//8AgAf/AIAH/wCA//8AgP//AIAh/wCACf8AgA7/AIAMAAAAAP8AgAj/AID//wCA//8AgAP/AIAD/wCA//8AgP//AIAH/wCAB/8AgP//AID//wCABQAAAAAAAAAA/wCADf8AgAr/AIAL/wCA//8AgP//AIAH/wCAB/8AgP//AID//wCAB/8AgAr/AID//wCA//8AgCH/AIAH/wCAJf8AgP//AID//wCAI/8AgP//AID//wCAB/8AgAf/AID//wCA//8AgAf/AIAL/wCA//8AgP//AID//wCA//8AgP//AID//wCA//8AgCT/AID//wCA//8AgAr/AIAK/wCA//8AgP//AIAKAAAAAP8AgCj/AID//wCA//8AgP//AID//wCA//8AgCP/AIAM/wCA//8AgP//AIAN/wCADf8AgP//AID//wCADQAAAAAAAAAA/wCAEP8AgBH/AIAP/wCAEf8AgBAAAAAAAAAAAP8AgBT/AIAVAAAAAAAAAAD/AIAV/wCAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQcH5rEGA8KxBAHCsQQBwrEEIQKxBAACsQQAArEEAAKxBAQCsQQwArEEAAKxBAACsQYAArEHBmaxB//+sQQ=="); }, get copy() { delete this.copy; return this.copy = Cc["@mozilla.org/widget/clipboardhelper;1"] .getService(Ci.nsIClipboardHelper).copyString; }, load() { self.copy(this.result); }, async pick() { var win = this.ownerGlobal; var picker = win.makeFilePicker(); picker.init(win, self.label, picker.modeOpen); if (await new Promise(picker.open) != picker.returnOK) return; var reader = new win.FileReader(); reader.onload = self.load; reader.readAsDataURL(picker.domFileOrDirectory); } }))();
Отсутствует