Забил спросить. Каких именно текстовых полей?
Ну для меня желательно в адресной строке, панели закладок и в окне Редактирования закладки это которое при нажатие на звёздочку, там Имя и Адрес.
Отсутствует
pastebin.com/drQYPDF8 QuickOpen.uc.js понемногу разгребаю код, пару мелких добавок.
Почему ссылки не ссылки, так как тут вроде нельзя, так что не рискую... /**/ это то что я добавлял.
Ах да, добавил автопопап там снизу, если не хотите можете удалить, так то сам код у меня в другом файле, может пригодиться.
Отредактировано func4ptch4 (13-02-2020 21:49:55)
Отсутствует
Ну для меня желательно в адресной строке, панели закладок и в окне Редактирования закладки это которое при нажатие на звёздочку, там Имя и Адрес.
Попробуй:
// Прокруткой колёсиком мыши очистить текстовые поля на панель поиска, адресной строке, в окне редактирования закладки, от 13.02.2020. addEventListener('DOMMouseScroll', (e, trg = e.target)=> { if (/editBMPanel|urlbar/.test(trg.id)) trg.value = ''; if (trg.tagName = "textbox") trg.value = ''; //searchbar }, false);
Отсутствует
Приветствую,
нужна кнопка или решение - закрыть другие вкладки кроме активной быстро.
спасибо.
«The Truth Is Out There»
Отсутствует
Попробуй:
Спасибо. Да в общем везде очищает, но вот после применения в боковой панели, дерево закладок, журнал остаются свёрнутыми и чтобы их восстановить приходится переключать. А в FindBar возникает конфликт с кнопкой от Dumby №14154, сразу очищает и прокручивает страницу на первое слово в поиске. Поэтому я в FindBar и не просил, у Dumby там своя очистка хорошо реализована. Можно для меня вариант без FindBar?
Отредактировано voqabuhe (14-02-2020 15:49:44)
Отсутствует
Спасибо. Да в общем везде очищает, но вот после применения в боковой панели, дерево закладок, журнал остаются свёрнутыми и чтобы их восстановить приходится переключать. А в FindBar возникает конфликт с кнопкой от Dumby №14154, сразу очищает и прокручивает страницу на первое слово в поиске. Поэтому я в FindBar и не просил, у Dumby там своя очистка хорошо реализована. Можно для меня вариант без FindBar?
// Прокруткой колёсиком мыши очистить текстовые поля на панели поиска, адресной строке, в окне редактирования закладки, от 13.02.2020. addEventListener('DOMMouseScroll', (e, trg = e.target)=> { // адресная строка и окно редактирования закладки if (/editBMPanel|urlbar/.test(trg.id)) trg.value = '', trg.focus(); // боковая панель if (trg.id == "search-box") trg._clearSearch(); // панель поиска if (trg.className == "searchbar-textbox") trg.value = '', trg.focus(); }, false);
Отсутствует
shadow_user пишет: vending_machine пишет: Нет окошка, какого-либо, куда вводить код.Не там смотришь. ПКМ на панели инструментов, панели вкладок, строке меню -> Добавить новую кнопку...Всё равно оно какое-то кривое. Не реагирует на кликскрытый текст
Сегодня обновился ФФ и у меня возникла та же проблема. Полистал топик но решение не нашел. Может быть есть мысли от чего так?
CB исполняет коды, старые кнопки видны и все как-будто работает. Но новую кнопку ни создать и не отредачить старую.
Не видно ни кода, ни интерфейса расширения.
Отредактировано leex (15-02-2020 10:31:32)
Отсутствует
bunda1
Теперь в боковой панели перестала совсем очищать.
Добавлено 14-02-2020 20:32:40
Сегодня обновился ФФ и у меня возникла та же проблема. Полистал топик но решение не нашел. Может быть есть мысли от чего так?
CB исполняет коды, старые кнопки видны и все как-будто работает. Но новую кнопку не создать и не отредачить старую.
Не видно ни кода, ни интерфейса расширения.
Возможно что дело в какой-то кнопке, которая стала несовместима с новой версией . Я как-то устаревшую кнопку попробовал поставить, так у меня всего Лиса перекособочило и сделало полностью не рабочим. Пришлось кнопки из бекапа восстанавливать, чтоб он очухался. Можно попробовать временно перенести куда-нибудь из профиля папку custombuttons, перезапустить и посмотреть появится возможность добавлять кнопки.
Отредактировано voqabuhe (14-02-2020 20:33:11)
Отсутствует
leex, было что-то похожее, но там не в самом CB а в контекстном меню и всплывающие окошки, в общем еще где-то тупо ни текста ни иконок, оказалось виновен был код, VConsole(Andrey_Krropotkin) точно название не помню он октрывал консоль ошибок в вертикальном-тулбаре, сам код вроде работал и т.д. но я стал искать и нашел удалил терь все видно.
В общем, что хочу сказать проблема может быть где угодно я искал в папке chrome, но нашел в другом месте, может какой код ломает.
Ну а про сам код он старый был еще с 70+, может какие функций или что изменились так как кнопка мне малонужна удалил, консолью почти не пользуюсь, да и не пойму что там написано.
Можно в каждый код добавить "if(true)return; //Disabled by Disable Initialization", и искать код п.с. нужно каждый раз делать рестарт, иначе не заметишь.
Отредактировано func4ptch4 (14-02-2020 20:41:11)
Отсутствует
CB исполняет коды, старые кнопки видны и все как-будто работает. Но новую кнопку не создать и не отредачить старую.
Установленный CB несовместим с новой версией FF. Пробуй, https://forum.mozilla-russia.org/viewto … 20#p778020 скачай с upload.ee, найди в папках архива .xpi и установи.
Отсутствует
Всем спасибо за ваши советы, но не сработало.
Первым делом из профиля выдернул папку custombuttons с моими кнопками
Перестартанул ФФ - эффекта нет.
Потом удалил сам СВ и установил новый из пака с upload.ee, рестарт - эффекта нет.
Потом удалил все свои конфиги из C:\Program Files (x86)\Mozilla Firefox и заменил на те что в паке, рестарт ФФ - эффекта нет.
Отредактировано leex (14-02-2020 21:43:10)
Отсутствует
А что консоль показывает?
Первое предупреждение возникло после установки кнопки, второе после её перетаскивания на панель.
TypeError: this.contentWindow.windowRoot is null PictureInPictureChild.jsm:353:5 Warning: attempting to write 12282 bytes to preference browser.uiCustomization.state. This is bad for general performance and memory usage. Such an amount of data should rather be written to an external file. This preference will not be sent to any content processes. [Custom Buttons :: Source Editor] 26:23:658 initWindow(): isFrame: false [Custom Buttons :: Source Editor] 26:24:162 loadOverlay(): chrome://global/content/editMenuOverlay.xul [Custom Buttons :: Source Editor] 26:24:163 loadOverlay(): chrome://browser/content/devtools/source-editor-overlay.xul [Custom Buttons :: Source Editor] 26:48:433 destroyWindow(): isFrame: undefined Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. 2 background.js:4408 Unchecked lastError value: Error: Could not establish connection. Receiving end does not exist. background.js:68 Warning: attempting to write 12307 bytes to preference browser.uiCustomization.state. This is bad for general performance and memory usage. Such an amount of data should rather be written to an external file. This preference will not be sent to any content processes. TypeError: doc.getAnonymousElementByAttribute is not a function button.js:2429:11 TypeError: doc.getAnonymousElementByAttribute is not a function button.js:2429:11 toggleImage aftercustomization toggleImage aftercustomization done
Добавлено 14-02-2020 22:37:32
У меня вроде работает.
А на какой версии проверяешь?
Отредактировано voqabuhe (14-02-2020 22:37:32)
Отсутствует
А на какой версии [firefox] проверяешь?
На Firefox 64 и Firefox 67 + e10 включен.
Добавлено 14-02-2020 23:10:49
Первое предупреждение возникло после установки кнопки, второе после её перетаскивания на панель.
Нет это не то. Я думал _clearSearch() не работает на Firefox 73. Не понятно. Надо устанавливать Firefox 73 но лень возится :/
Отредактировано bunda1 (14-02-2020 23:10:49)
Отсутствует
leex попробуй метод вычитания, в новом чистом профиле, если не работает виновник не в профиле, так как у меня пак работает.
Да и портабельная версия как по мне лучше, чем установленная там легче все проверять тестить, да и вообще.
У тебя надо смотреть в Win+R > %UserProfile%\AppData > папки точно не знаю, но там будет Mozilla, там уже чистить или если там профиль смотреть, тоже не знаю.
Также custombuttons.xpi с пака надо в папку "extensions" потом в адоннах включить, это не установочник, папка "custombuttons>buttonsoverlay.xul" это сами кнопки. Ну не знаю, если чистый профиль и CB не сработают, еще "Source Editor" у меня конфликтует на 75 я его удалил, как в 73 без понятий. Портабельная удобна еще тем что все под руками, и ты примерно уже знаешь где может быть проблема, а не бегать и искать что где и т.д.
Отредактировано func4ptch4 (15-02-2020 00:20:57)
Отсутствует
Первым делом из профиля выдернул папку custombuttons с моими кнопками
Перестартанул ФФ - эффекта нет.
Потом удалил сам СВ и установил новый из пака с upload.ee, рестарт - эффекта нет.
Потом удалил все свои конфиги из C:\Program Files (x86)\Mozilla Firefox и заменил на те что в паке, рестарт ФФ - эффекта нет.
Сделано много действий (некоторые избыточны),
и они расписаны довольно подробно, однако, почему-то, не упомянуто про это.
Коды старого расширения запросто могли остаться в лисьем кэше.
открывает настройки в непотребном виде
Добавил немного целебных от непотребства правил из
chrome://browser/skin/preferences/in-content/preferences.css
// Настройка функций кликов мыши для кнопки ................... this.onmousedown = e => { if (e.button == 0) // длинный левый клик self.timer = setTimeout(() => { self.onmouseup = null; cbu.getPrefs("CB.Proxy.connectionsInTab") ? openConnectionsInTab() : openConnections(); }, 500); this.onmouseup = e => { // левый клик if (e.button) return; clearTimeout(self.timer); switch(cbu.getPrefs("network.proxy.type")) { case 0: var data = 1; break; case 1: var data = 2; break; //case 2: var data = 0; break; default: var data = 0; } cbu.setPrefs("network.proxy.type", data); } } // правый клик this.oncontextmenu = e => e.detail == 2 && !menuPopup.hidePopup() || e.ctrlKey || !!menuPopup.openPopup(this, "after_start"); // Подсказка для кнопки ................... this.onmouseover = () => this.tooltipText = "Proxy \nЛ: Переключить прокси \nДЛ: Открыть настройки прокси" + "\nП: Mеню кнопки \nДП: CB меню \n\nТекущие настройки прокси: " + "\nIP: " + cbu.getPrefs("network.proxy.http") + "\nПорт: " + cbu.getPrefs("network.proxy.http_port"); // Создать меню для кнопки ................... var array = [ {label: "Добавление прокси в контекстом меню", value: 'CB.Proxy.inContextMenu'}, {label: "Открывать настройки прокси как вкладку", value: 'CB.Proxy.connectionsInTab'}, {label: "Переключать на режим 'Без прокси' при закрытии браузера ", value: 'CB.Proxy.reset'} ]; var menuPopup = document.getElementById('mainPopupSet').appendChild(document.createElementNS(xulns, "menupopup")); array.forEach(m => { var mItem = document.createElementNS(xulns, "menuitem"); mItem.setAttribute("label", m.label); mItem.setAttribute("type", "checkbox"); mItem.setAttribute("checked", cbu.getPrefs(m.value)); mItem.onclick = () => cbu.setPrefs(m.value, !cbu.getPrefs(m.value)); menuPopup.appendChild(mItem); }); addDestructor(() => menuPopup.remove()); var listenClick = win => { var args = ["click", win.close.bind(win), true]; var unload = () => gBrowser.removeEventListener(...args); gBrowser.addEventListener(...args); win.addEventListener("unload", unload, {once: true}); } var version = parseInt(Services.appinfo.platformVersion); var url = `chrome://browser/content/preferences/connection.x${version >= 72 ? "htm" : "u"}l`; var fox73 = version >= 73, noop = () => {}; if (fox73) var grid = win => { var url = "data:text/css;charset=utf-8," + encodeURIComponent(` #proxy-grid, #dnsOverHttps-grid { display: grid; grid-template-columns: auto 1fr; align-items: center; } #proxy-grid > .thin { grid-column-end: 3; height: 20px; } #dnsOverHttps-grid.custom-container-hidden #networkCustomDnsOverHttpsInput, #dnsOverHttps-grid.custom-container-hidden #networkCustomDnsOverHttpsInputLabelContainer { display: none; } `); (grid = win => win.windowUtils.loadSheetUsingURIString(url, win.windowUtils.AUTHOR_SHEET))(win); } var winOpen = win => win.addEventListener("readystatechange", winReady, {once: true, capture: true}); var winReady = e => { var win = e.target.ownerGlobal, cw = win.isChromeWindow; if (cw || (win.location == url && !win.docShell.name)) winPatch(win, cw); } var winPatch = (win, cw) => { win.opener = {gSubDialog: {_dialogs: [{ _frame: {get contentDocument() { cw && listenClick(win); delete this.contentDocument; return this.contentDocument = win.document; }}, resizeVertically: cw ? () => win.sizeToContent() : noop }]}}; fox73 && grid(win); } addEventListener("MozBeforeInitialXULLayout", winReady, false, gBrowser.tabpanels || 1); for(var {contentWindow: win} of gBrowser.browsers) win && win.location == url && !win.opener && winPatch(win); // Функция открывает настройки прокси в окне ................... function openConnections() { var win = [...Services.wm.getEnumerator(null)].find(w => w.location == url); win ? win.focus() : winOpen(openDialog(url, "Proxy", "centerscreen")); } // Функция открывает настройки прокси в вкладке ................... function openConnectionsInTab() { var connections = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTrustedTab(url) ); // oбработчик ждет пока откроется прокси, удаляет себя и добавляет атрибут connections.addEventListener("pageshow", e => e.target.documentElement.setAttribute("type", "prefwindow") , {once: true}); } // Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ................... var s = "network.proxy.type"; function toggleImage() { var {icon} = self; switch( cbu.getPrefs(s) ) { //case 0: icon.src = self.image; break; case 1: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='; break; case 2: icon.src = 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAcHQAAYGGkAEBBfAAEBKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAQEAAgICAAICAgACAgMBAQEAAAEBJAA6OrQAf3/8ALCw/gCiov8AXl7tABkZewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMAOTm7AIOD/wCjo/0A1tb9AOHh/gCcnP4AY2P/ABISZwAAAAAAAAAAAAEBAQAAAAAAGBgTACgoLwAmJjEAJiYnADIyXgBWVv8Adnb8AJ2d/gCxsf8Aycn/AJeX+wBycv8ASkrGAAACAAABAQMABwcbAAAADwBfX34A+fn/AOHh/ADj4/8AoaH/AFJS/gB1df8Aq6v/ALm5/wDT0/8Ap6f+AHNz/wBeXu0AFRUdAAAAAAABAQEAAAABAAUFEQCjo7YAzs72ANnZ/wCfn/4AY2P/AHl5/wCzs/8A5ub/ALu7/wCcnP4AcHD/AFNT7AAVFRwAICAmAHd3mQB6eqIAdXWcAHl5nwClpeAAyMj/AK2t/gB9ff8An5//ANXV/wDh4f8A1tb/AJ6e+gB0dP8AUFC7AAEGAABcXH4A////AP39/AD///8A////AP///wD///8A////ALOz/wCnp/8A4eH/AObm/wDPz/4ArKz/AI2N/AAhIT8AAAAAAFxcfwDd3f8Aa2v4AGpq+wBycvwAeHj+AHt7/wB/f/8Ac3P/AHNz/wCiov8AwMD+ALS0/wCEhOUAKSlFAAAAAAABAQIAXl5/ANjY/wBGRvwARkb/AFJS/wBaWv8AX1//AF9f/wBfX/8AWVn/AFRU/wBRUfsAvr7/AGNjiAAAAAAABAQGAAAAAABeXoAA2tr/AFtb/ABeXv8AbGz/AHV1/wB6ev8Ae3v/AHd3/wBxcf8Aamr/AFtb+wDS0v8AbW2JAAAAAAADAwQAAAAAAF5egADa2v8AZGT8AGlp/wB5ef8AhYX/AI2N/wCTk/8AlJT/AJKS/wCPj/8AfX37AM/P/wBqaogAAAAAAAMDBAAAAAAAXl6AANra/wBycvwAf3//AJOT/wClpf8AsLD/ALa2/wC1tf8Ar6//AKqq/wCTk/sA0ND/AGpqiAAAAAAAAwMEAAAAAABeXn8A2dn/AJGR/ACnp/8At7f/AMXF/wDQ0P8A09P/ANHR/wDLy/8AyMj/AK2t+wDR0f8AaWmHAAAAAAADAwQAAAAAAF5efwDY2P8AkpL5AKWl/ACurvwAuLj8AL+//ADCwvwAwMD8AL29/AC8vPwAo6P4ANDQ/wBqaokAAAAAAAMDBAAAAAAAV1d3APf3/wDa2vwA3d3/AOHh/wDk5P8A5ub/AOTk/wDh4f8A39//ANra/wDT0/sA+fn/AGNjfwAAAAAAAwMEAAAAAAAWFhoAV1d6AF9fgQBgYIAAYWGAAGFhgABiYoAAYmKAAGFhgABhYYAAYGCAAF5egABbW4AAGhoeAAAAAAABAQEAAAAA/oOAQeEAgEH6AIBBoACAQQAAAEGAAABBAACAQQAAgEEAAQBBAAKAQQACgEEAAoBBAAKAQQACgEEAAoBBAAKAQQACgEE='; break; default: icon.src = self.image; } } toggleImage(); Services.prefs.addObserver(s, toggleImage, false); addDestructor(() => Services.prefs.removeObserver(s, toggleImage)); // Переключать на режим 'Без прокси' при закрытии браузера если это разрешено в 'about:config' ................... var toggleButton = { observe(s, t, data) { cbu.getPrefs("CB.Proxy.reset") && data == "shutdown" && cbu.setPrefs("network.proxy.type", 0); } }; Services.obs.addObserver(toggleButton, "quit-application", false); // Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ................... var contextMenu = document.getElementById("contentAreaContextMenu"); var menuitem = document.createElementNS(xulns,"menuitem"); menuitem.setAttribute("label", "Добавить прокси"); menuitem.setAttribute("class", "menuitem-iconic"); menuitem.setAttribute("image", self.image); menuitem.onclick =()=> addNewProxy(menuitem); contextMenu.appendChild(menuitem); // как последний пункт меню addDestructor(() => menuitem.remove()); addEventListener("popupshowing", () => { menuitem.hidden = !cbu.getPrefs("CB.Proxy.inContextMenu") || !gContextMenu.isContentSelected; // !gContextMenu.isTextSelected; }, false, contextMenu); // добавление прокси ................... function addNewProxy(menuitem) { var sel = gBrowser.contentDocument ? gBrowser.contentDocument.defaultView.getSelection().toString() // Pale Moon : gContextMenu.selectionInfo.fullText; // Firefox sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки sel = sel.replace(/\s+/g, ":"); // заменить пробелы внутри строки // если только порт ... if (sel.length < 6 && isFinite(sel)) { var lab = 'порт'; cbu.setPrefs("network.proxy.http_port", +sel); } // если только адрес ... if (sel.length > 5 && !/:/.test(sel) && sel.split(".").length == 4) { var lab = 'адрес'; cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", sel)); } // если адрес и порт ... if (sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4) { var lab = 'адрес и порт'; var arr = sel.split(":"), IP = arr[0], port = arr[1]; cbu.setPrefs("network.proxy.http_port", +port); cbu.setPrefs("network.proxy.http", convertFromUnicode("UTF-8", IP)); } // всплывающая подсказка рядом с выделенным текстом ... var mainPopupSet = document.getElementById('mainPopupSet'); var tooltip = mainPopupSet.appendChild(document.createElementNS(xulns,"tooltip")); tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;"; var image = tooltip.appendChild(document.createElementNS(xulns, "image")); image.setAttribute("src", self.image); var label = tooltip.appendChild(document.createElementNS(xulns, "label")); label.setAttribute("value", "Установлен " + lab + " прокси: " + sel); tooltip.openPopup(menuitem.parentNode, "before_start"); setTimeout(() => mainPopupSet.removeChild(tooltip), 3000); }; // Конвертировать текст в юникод ............. function convertFromUnicode(charset, str) { var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); converter.charset = charset; str = converter.ConvertFromUnicode(str); return str + converter.Finish(); }
Отсутствует
Добавил немного целебных от непотребства правил из
chrome://browser/skin/preferences/in-content/preferences.css
скрытый текст
Без прокси некрасиво - звёздочка, где иконку тройную взять?
А всё, у bunda1 утащил.
Отредактировано voqabuhe (17-02-2020 01:56:35)
Отсутствует
leex пишет: А у меня вообще нет такой папки в профилеЕщё раз: имеется в виду «Локальный каталог», а не «Корневой каталог».Открой вкладку с адресом about:profiles
Опять двадцать пять. Как же я забыл про этот способ
Удалил папку startupCache - СВ заработал
Спасибо Dumby
Отредактировано leex (17-02-2020 12:13:04)
Отсутствует
Выложите, пожалуйста, последнюю версию CB для FF 56.
Последняя не знаю, а вот эта версия работает: https://forum.mozilla-russia.org/viewto … 43#p744943
Win7
Отсутствует
У кого-нибудь есть рабочая кнопка "Clipboard"? Была она у меня но перестала работать после 73+.
/*Initialization Code*/ self.image='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHvSURBVDjLjZI/aFNRFMZ/Ly+GlCYlaMF/1D+4FQRJREigk7OiIAguHSwUkrkgLhVcpIurQjdBcLAITi4FETpIAw46CGIHJ0tFamlt3rvnfA7Ji2kTwQOXe4b7/c73HW4kCYCnc+engU8M1/b88kaFf1T05O65KvAAuFY6epw79xfZ3XoPwPjkFZ4t3uP37i+A58DK/PLGy0FAHli5euPmmbFSmfTrByRhnV0AJDFzcYrcyQtIuvXm1evrwBDg7FhpgmRnk+CBjRePQQLEltoIsb/5jeLk6QJQOBwhD4AbCoFc5QRuAckP5tzfI9neG7mDPIDc8RDwtIOnnZ6D/6seIOCW9ie7Ij7+mGDfYlB3F4oKfD8yTavVWnJ3zAwz+9wDGB5SsICbkYQc8dgkt+cekiTJ4aELkojjOG02m0t9ACFF5ig4bsLN6XQ6rK2toYFIWV+v1wkh8NeBOR4cD4ZbhJkBUK1WDwizXtIgwPHUUHAUDLcc3hO02+2+eBBSr9cxsy6gO70L8CwChqSRDrLqO8CEp97bgSGL8CgAsL6+PiSURKPR6Dt4lybJzPipKeRC7uRTiH+WkUStVhsSZ3cGePR2dbUMXMoeGXl2KpcpFotEUTTyA8VxjJkRjco2OzubM7MFMzvW+zD94+6D58sfRXpka4kRkDcAAAAASUVORK5CYII='; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Блок инициализации глоб. переменных и функций // срок существования - один сеанс браузера //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // bbBBCodeStat=true // разрешить/включить BBCode window.arycb_BBCodeClipboardStrings=this.clipboardStrings=[]; // Массив буфера обмена // //******************************************************** //--------Общие функции для вставки BBCode---------------- //********************************************************* //++++++++++++++++++BEGIN DEF++++++++++++++++++++++++++++++ //-------------------------------------------------------- // Функция lb_BBCodePrim // [bbCode]выделенный[/bbCode] // по умолчанию от ЛКМ) lb_BBCodePrim = function (open,close){ var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); text +=open+theBox.value.substring(startPos, endPos)+close; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; var nHeight = theBox.scrollHeight - oHeight; theBox.scrollTop = oPosition + nHeight; }; //--------------------------------------------------------- // Функция mb_BBCodePrim // Резерв // по умолчанию от CКМ mb_BBCodePrim=function(open,close){}; // ------------------------------------------------------- // Функция rb_BBCodePrim // [bbCode]параметр PASTE по умолчанию из буфер обмена[/bbCode] // по умолчанию от ПКМ rb_BBCodePrim=function(open,close,paste){ if(paste==undefined){open +=close;} //буфер обмена пуст else {open +=paste+close;} var theBox = document.commandDispatcher.focusedElement; var startPos = theBox.selectionStart; var endPos = theBox.selectionEnd; var selectionLen = endPos - startPos var oPosition = theBox.scrollTop; var oHeight = theBox.scrollHeight; var text=theBox.value.substring(0,startPos); var nHeight = theBox.scrollHeight - oHeight; text +=open; text +=theBox.value.substring(endPos, theBox.value.length); theBox.value = text; theBox.selectionStart = endPos + open.length; theBox.selectionEnd = endPos + open.length - selectionLen; theBox.scrollTop = oPosition + nHeight; }; // ------------------------------------------------------- // Функция fHLD_Get_ListClipboardPrim // получить список сохранёного буфера обмена // fnHLD_Get_ListClipboardPrim=function (){ var cs=arycb_BBCodeClipboardStrings; return(cs.slice(0)); }; //++++++++++++++++++END DEF+++++++++++++++++++++++++++++++++++ //Список сохранёного буфера обмена //Не вызываем это, обработка по таймеру или по событию ЛКМ //-----Обработчики буфера обмена this.MAX_ENTRIES=11; //Максимальное число записей 11 this.CHECK_INTERVAL=1000; //Время опроса буфера 1000 миллисекунд this.type="menu"; this.orient="horizontal"; this._menupopup=this.appendChild(document.createXULElement("menupopup")); this._menupopup.setAttribute("oncommand","this.parentNode.handleCommand(event.target);"); this.checkClipboard=function(){ var clipStr=readFromClipboard(); if(clipStr && this.clipboardStrings.indexOf(clipStr)==-1) this.storeString(clipStr); }; this.storeString=function(str){ var cs=this.clipboardStrings; cs.push(str); while(cs.length>this.MAX_ENTRIES) cs.shift(); var mi=document.createXULElement("menuitem"); mi.setAttribute("label",str); this._menupopup.appendChild(mi); while(this._menupopup.childNodes.length>this.MAX_ENTRIES) this._menupopup.removeChild(this._menupopup.firstChild); }; this.handleCommand=function(mi){ var indx=Array.indexOf(mi.parentNode.childNodes,mi); if(indx != -1) this.insertText(this.clipboardStrings[indx]); }; this.insertText=function(str){ var cmd="cmd_insertText"; var controller=document.commandDispatcher.getControllerForCommand(cmd); if(controller&&controller.isCommandEnabled(cmd)){ controller=controller.QueryInterface(Ci.nsICommandController); var params="createCommandParams" in Cu ? Cu.createCommandParams() : Cc["@mozilla.org/embedcomp/command-params;1"] .createInstance(Ci.nsICommandParams);; params.setStringValue("state_data",str); controller.doCommandWithParams(cmd,params); } }; setInterval(function(button){button.checkClipboard();},this.CHECK_INTERVAL, this); this.setAttribute("onpopupshowing","this.checkClipboard();"); var ios=Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); var sss=Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); var css=new String(); css=css+ '@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");'; css=css+ 'tooltip[label^="' + this.label + '\\000a\\000a"] {'; css=css+ "-moz-appearance:none!important;"; css=css+ "border:1px solid silver!important;"; css=css+ "max-width:none!important;"; css=css+ "background:black!important;"; css=css+ "color:silver!important;"; css=css+ "font-family:monospace!important;"; css=css+ "}"; var uss=ios.newURI("data:text/css,"+encodeURIComponent(css),null,null); if(!sss.sheetRegistered(uss,sss.AGENT_SHEET))sss.loadAndRegisterSheet(uss,sss.AGENT_SHEET); this.onDestroy=function(reason){ if(reason=="update"){if(sss.sheetRegistered(uss,sss.AGENT_SHEET))sss.unregisterSheet(uss,sss.AGENT_SHEET);} if(reason=="delete"){if(sss.sheetRegistered(uss,sss.AGENT_SHEET))sss.unregisterSheet(uss,sss.AGENT_SHEET);}} this.showClipboard=function(){ var code=custombuttons.cbService.readFromClipboard(); this.tooltipText=code ? this.label + "\n\n" + code:this.label;} this.setAttribute("onmouseover","this.showClipboard()");
Отредактировано func4ptch4 (17-02-2020 20:23:00)
Отсутствует
func4ptch4 попробуй замени var indx = Array.prototype.indexOf.call(mi.parentNode.childNodes, mi);
У меня она без BBкода и чуть по другому настроен css (меняет тултипы для всех кнопок)
/*Initialization Code*/ window.arycb_BBCodeClipboardStrings = this.clipboardStrings = []; // Массив буфера обмена //this.label=""; // ------------------------------------------------------- // Функция fHLD_Get_ListClipboardPrim // получить список сохранёного буфера обмена // fnHLD_Get_ListClipboardPrim = function (){ var cs = arycb_BBCodeClipboardStrings; return (cs.slice(0)); }; //Список сохранёного буфера обмена //Не вызываем это, обработка по таймеру или по событию ЛКМ //-----Обработчики буфера обмена this.MAX_ENTRIES = 16; //Максимальное число записей 16 this.CHECK_INTERVAL = 1000; //Время опроса буфера 1000 миллисекунд this.type = "menu"; this.orient = "horizontal"; this._menupopup = this.appendChild(document.createXULElement("menupopup")); this._menupopup.setAttribute("oncommand", "this.parentNode.handleCommand(event.target);"); this.checkClipboard = function() { var clipStr = readFromClipboard(); if(clipStr && this.clipboardStrings.indexOf(clipStr) == -1) this.storeString(clipStr); }; this.storeString = function(str) { var cs = this.clipboardStrings; cs.push(str); while(cs.length > this.MAX_ENTRIES) cs.shift(); var mi = document.createXULElement("menuitem"); mi.setAttribute("label", str); this._menupopup.appendChild(mi); while(this._menupopup.childNodes.length > this.MAX_ENTRIES) this._menupopup.removeChild(this._menupopup.firstChild); }; this.handleCommand = function(mi) { //var indx = Array.indexOf(mi.parentNode.childNodes, mi); var indx = Array.prototype.indexOf.call(mi.parentNode.childNodes, mi); if(indx != -1) inserter.insert(this.clipboardStrings[indx]); }; var inserter = { get docShell() { delete this.docShell; return this.docShell = "docShell" in document && document.docShell instanceof Ci.nsIDocShell ? document.docShell : window.docShell; }, get insertText() { delete this.insertText; return this.insertText = text => { if (!this.docShell.isCommandEnabled("cmd_insertText")) return; var params = "createCommandParams" in Components.utils ? Cu.createCommandParams() : Components.classes["@mozilla.org/embedcomp/command-params;1"] .createInstance(Components.interfaces.nsICommandParams); params.setStringValue("state_data", text); this.docShell.doCommandWithParams("cmd_insertText", params); } }, insert(text) { var br = document.activeElement; !br || br.localName != "browser" || !br.isRemoteBrowser ? this.insertText(text) : br.messageManager.loadFrameScript( `data:,(${this.insertText})${encodeURIComponent(text.toSource())}` , false, true); } }; setInterval(function(button) { button.checkClipboard(); }, this.CHECK_INTERVAL, this); this.setAttribute("onpopupshowing", "this.checkClipboard();"); var ios = Components.classes["@mozilla.org/network/io-service;1"]. getService(Components.interfaces.nsIIOService); var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]. getService(Components.interfaces.nsIStyleSheetService); var css = new String(); css = css + '@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");'; css = css + 'tooltip {'; css = css + "-moz-appearance: none !important;"; css = css + "border: 1px solid black !important;"; css = css + "max-width: none !important;"; css = css + "background: #ffffe0 !important;"; css = css + "color: #8b0000 !important; !important;"; css = css + "font-family: verdana !important;"; css = css + "border-radius: 5px !important;"; css = css + "-moz-border-radius: 5px !important;"; css = css + "font-size: 14px !important;"; css = css + "padding: 4px 8px !important;"; css = css + "}"; var uss = ios.newURI("data:text/css," + encodeURIComponent(css), null, null); if (!sss.sheetRegistered(uss, sss.AGENT_SHEET)) sss.loadAndRegisterSheet(uss, sss.AGENT_SHEET); this.onDestroy = function(reason) { if (reason == "update") { if (sss.sheetRegistered(uss, sss.AGENT_SHEET)) sss.unregisterSheet(uss, sss.AGENT_SHEET); } if (reason == "delete") { if (sss.sheetRegistered(uss, sss.AGENT_SHEET)) sss.unregisterSheet(uss, sss.AGENT_SHEET); } } this.showClipboard = function() { var code = custombuttons.cbService.readFromClipboard(); this.tooltipText = code ? this.label + "\n\n" + code: this.label; } this.setAttribute("onmouseover", "this.showClipboard()");
Отредактировано Andrey_Krropotkin (18-02-2020 08:41:27)
Отсутствует