Есть небольшая особенность
Ну, там все правильно: параметр "country" - отсутствует:
Проверяется же поле "Subject", а не "Issuer". Хотя я тоже не уверен, что страну проверять надо у того, кому выдан, а не у того - кто. Если думаете, что второе - правильнее, то просто замените в коде, в строке
Subject - на Issuer.
lokiju просит помочь с кодом Link Tooltips:
У меня все корректно работает.
Отсутствует
Link Tooltips показывает адрес ссылки под курсором возле курсора. Но с FF38 ЕМНИП начались проблемы: после просмотра длинного адреса тултип не уменьшается при просмотре короткого адреса до перезагрузки браузера.
Попробуй:
// Добавить подсказки к ссылкам на странице, от 07.07.2016. ................. addEventListener('mouseenter', (e, el = e.target)=> { var url = XULBrowserWindow.overLink; if (url) el.title = url; }, true, gBrowser);
Отсутствует
bunda1, спасибо. Но у меня ваш код вобще не работает.Попробую ещё завтра с полной очисткой истории и перезапуском ОС
voqabuheЭто кнопка "CB code 2 link". Не могу найти поиском на форуме. Потерли, вероятно.
Отредактировано turbot (Сегодня 16:11:53)
Нет. Это бесчётное количество раз правленный кусочками скрипт Greasemonkey
// ==UserScript== // @name Linkify Plus(Mar1,2013) // @version 2.1.4 // @namespace http://arantius.com/misc/greasemonkey/ // @description Turn plain text URLs into links. Supports http, https, ftp, email addresses. // @include * // @exclude http://www.google.tld/search* // @exclude https://www.google.tld/search* // @exclude http://music.google.com/* // @exclude https://music.google.com/* // @exclude http://mail.google.com/* // @exclude https://mail.google.com/* // @exclude http://docs.google.com/* // @exclude https://docs.google.com/* // @exclude http://mxr.mozilla.org/* // ==/UserScript== // // Copyright (c) 2011, Anthony Lieuallen // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of Anthony Lieuallen nor the names of its contributors // may be used to endorse or promote products derived from this software // without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // /******************************************************************************* Loosely based on the Linkify script located at: http://downloads.mozdev.org/greasemonkey/linkify.user.js Version history: Version 2.1.4 (Aug 12, 2012): - Bug fix for when (only some) nodes have been removed from the document. Version 2.1.3 (Oct 24, 2011): - More excludes. Version 2.1.2: - Some bug fixes. Version 2.1.1: - Ignore certain "highlighter" script containers. Version 2.1: - Rewrite the regular expression to be more readable. - Fix trailing "." characters. Version 2.0.3: - Fix infinite recursion on X(HT)ML pages. Version 2.0.2: - Limit @include, for greater site/plugin compatibility. Version 2.0.1: - Fix aberrant 'mailto:' where it does not belong. Version 2.0: - Apply incrementally, so the browser does not hang on large pages. - Continually apply to new content added to the page (i.e. AJAX). Version 1.1.4: - Basic "don't screw up xml pretty printing" exception case Version 1.1.3: - Include "+" in the username of email addresses. Version 1.1.2: - Include "." in the username of email addresses. Version 1.1: - Fixed a big that caused the first link in a piece of text to be skipped (i.e. not linkified). *******************************************************************************/ var notInTags = [ 'a', 'code', 'head', 'noscript', 'option', 'script', 'style', 'title', 'textarea']; var textNodeXpath = ".//text()[not(ancestor::"+notInTags.join(') and not(ancestor::')+")]"; // Built based on: // - http://en.wikipedia.org/wiki/URI_scheme // - http://www.regular-expressions.info/regexbuddy/email.html var urlRE = new RegExp( '(' // leading scheme:// or "www." + '\\b([a-z][-a-z0-9+.]+://|www\\.)' // everything until non-URL character + '[^\\s\'"<>()]+' + '|' // email + '\\b[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}\\b' + ')', 'gi'); var queue = []; /******************************************************************************/ linkifyContainer(document.body); document.body.addEventListener('DOMNodeInserted', function(event) { linkifyContainer(event.target); }, false); /******************************************************************************/ function linkifyContainer(container) { // Prevent infinite recursion, in case X(HT)ML documents with namespaces // break the XPath's attempt to do so. (Don't evaluate spans we put our // classname into.) if (container.className && container.className.match(/\blinkifyplus\b/)) { return; } var xpathResult = document.evaluate( textNodeXpath, container, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); var i = 0; function continuation() { var node = null, counter = 0; while (node = xpathResult.snapshotItem(i++)) { var parent = node.parentNode; if (!parent) continue; // Skip styled <pre> -- often highlighted by script. if ('PRE' == parent.tagName && parent.className) continue; linkifyTextNode(node); if (++counter > 50) { return setTimeout(continuation, 0); } } } setTimeout(continuation, 0); } function linkifyTextNode(node) { // fix for 4chan // traverse all siblings that are separated from this one with a <wbr> var toRemove = []; var addtxt = ''; var next; var current = node; while (true) { next = current.nextSibling; if (next == null) { break; } if (next.tagName != 'WBR') { break; } toRemove.push(next); next = next.nextSibling; if (next == null || next.nodeType != Node.TEXT_NODE) { toRemove.pop(); break; } toRemove.push(next); addtxt += next.textContent; current = next; } var i, l, m; var txt = node.textContent + addtxt; var span = null; var p = 0; while (m = urlRE.exec(txt)) { if (null == span) { // Create a span to hold the new text with links in it. span = document.createElement('span'); span.className = 'linkifyplus'; } //get the link without trailing dots l = m[0].replace(/\.*$/, ''); var lLen = l.length; //put in text up to the link span.appendChild(document.createTextNode(txt.substring(p, m.index))); //create a link and put it in the span a = document.createElement('a'); a.className = 'linkifyplus'; a.appendChild(document.createTextNode(l)); if (l.indexOf(":/") < 0) { if (l.indexOf("@") > 0) { l = "mailto:" + l; } else { l = "http://" + l; } } a.setAttribute('href', l); span.appendChild(a); //track insertion point p = m.index+lLen; } if (span) { //take the text after the last link span.appendChild(document.createTextNode(txt.substring(p, txt.length))); //replace the original text with the new span try { toRemove.forEach(function (n) { node.parentNode.removeChild(n); }); node.parentNode.replaceChild(span, node); } catch (e) { console.error(e); console.log(node); } } } var style = document.createElement('style'); style.type = 'text/css'; style.appendChild(document.createTextNode('a.linkifyplus {color: #006400!important; background-color: #FFFF00!important;}')); document.getElementsByTagName('head')[0].appendChild(style);
Отсутствует
bunda1, спасибо. Но у меня ваш код вобще не работает.Попробую ещё завтра с полной очисткой истории и перезапуском ОС
У меня работает на разных версиях Firefox, проверь на чистом профиле.
Отсутствует
Subject - на Issuer.
Поменял. Благодарствую.
Господа, помогите пожалуйста с такой задачей:
Есть кнопка, которая открывает диалог сохранения иконки сайта по среднему клику (не обязательно именно эту кнопку брать за основу, это как пример):
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%3ESave%20Favicon%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-4%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*/%0Avar%20orgImg%3Dthis.image%3B%0Athis.onLeftClick%3Dfunction%28%29%0A%7B%0A%20%20%20this.image%20%3D%20gBrowser.selectedTab.image%3B%0A%7D%0A%0Athis.onMiddleClick%3Dfunction%28%29%0A%7B%0A%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28gBrowser.selectedTab.image%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28%20function%28%29%20%7B%20saveDocument%28window.content.document%29%3B%0A%20%20%20%20%20%20%20%20gBrowser.removeTab%28gBrowser.selectedTab%29%3B%20%20%7D%2C%201000%29%3B%0A%7D%0A%0Athis.onRightClick%3Dfunction%28%29%0A%7B%0A%20%20%20this.image%3DorgImg%3B%0A%7D%0A%0A//**********%20No%20need%20to%20make%20any%20changes%20to%20below%20code%20**************%0Athis.execute%3D%20function%28evt%29%0A%7B%0A%0A%20%20%20if%28evt.shiftKey%29%20%7B%0A%20%20%20%20%20%20this.showPopup%28this%29%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%7D%0A%0A%20%20%20switch%28evt.button%29%0A%20%20%20%7B%0A%20%20%20%20%20%20case%200%3A%0A%20%20%20%20%20%20%20%20%20this.onLeftClick%28%29%3B%0A%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%201%3A%0A%20%20%20%20%20%20%20%20%20this.onMiddleClick%28%29%3B%0A%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20case%202%3A%0A%20%20%20%20%20%20%20%20%20this.onRightClick%28%29%3B%0A%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%7D%0A%7D%0A%0A%0Athis.showPopup%20%3D%20function%28node%29%20%7B%0A%20%20var%20popup%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0A%20%20var%20x%20%3D%20node.boxObject.x%3B%0A%20%20var%20y%20%3D%20node.boxObject.y%20+%20node.boxObject.height%3B%0A%20%20document.popupNode%20%3D%20node%3B%0A%20%20popup.showPopup%28node%2C%20x%2C%20y%2C%20%22popup%22%2C%20null%2C%20null%29%3B%0A%7D%0A%0Athis.setAttribute%28%22onclick%22%2C%20%22this.execute%28event%29%3B%22%29%3B%0A//this.setAttribute%28%22context%22%2C%20%22%22%29%3B%0Athis.tooltipText%20%3D%20this.label%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
Я хотел бы, чтобы иконка не сохранялась, а отправлялась расширению Image Assistant (расширение по правому клику из контекстного меню открывает в стороннем приложении выбранную картинку).
На всякий случай, вот код запуска Image Assistant из контекстного меню, который я посмотрел с помощью Menu Wizard: tv.ultranet.imageassistant.ImageAssistantClient.singleton.openImage();
Заранее спасибо за помощь.
Отредактировано firefan (16-07-2016 15:09:22)
Отсутствует
Перестала работать кнопка Http-Logger в Firefox 47, поправьте пожалуйста кто может.
Отсутствует
Благодарствую
Поменяйте там еще:
function getCountries() { try { var result = []; for(var cert = gCert; cert; cert = cert.issuer) { tree.loadASN1Structure(cert.ASN1Structure); for(var res, ind = 0; ind < tree.rowCount; ind++) if (tree.getCellText(ind, {}) == "Issuer") { res = tree.getDisplayData(ind); break; } var array = res.split("\n"); var country = array.find(str => str.startsWith("C = ")); result.unshift(country ? country.slice(4) : "??"); } return result.join("-"); } catch(ex) {} };
Отсутствует
Спасибо большое!
turbot, не могли бы вы ответить на пару вопросов по поводу вашей кнопки Быстрое переключение параметров about:config
1) Как указать \ (слеш) для параметра string? К сожалению, не могу указать путь там, слеши съедаются.
2) Можно ли этот функционал (изменение параметра, отслеживание его состояния) вынести из контекстного меню в отдельную кнопку, чтобы изменение параметра происходило просто по нажатию, циклично? В идеале, чтобы она тоже цвет меняла в зависимости от настройки по-умолчанию.
Отредактировано firefan (22-07-2016 21:16:36)
Отсутствует
firefan
1 - экранируйте. Т.е., \/\/ - вместо //
2 - я эту кнопку потому и сделал, что кол-во отдельных кнопок разрослось до неприличия. Вот:
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%3EIndexedDB%20on/off%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/svg+xml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTYgMTYiPgo8ZyBmaWxsPSIjZWRmMGYxIj4KPHBhdGggZD0ibTEuMywxMi41di0yLjRjMCwwIDAsMi41IDYuNywyLjUgNi43LDAgNi43LTIuNSA2LjctMi41djIuNGMwLDAgMCwyLjctNi44LDIuNy02LjYsMC02LjYtMi43LTYuNi0yLjd6Ii8+CjxwYXRoIGQ9Im0xNC43LDMuNGMwLTEuNC0zLTIuNS02LjctMi41cy02LjcsMS4xLTYuNywyLjVjMCwuMiAwLC4zIC4xLC41LS4xLS4zLS4xLS40LS4xLS40djEuNWMwLDAgMCwyLjcgNi43LDIuNyA2LjcsMCA2LjgtMi43IDYuOC0yLjd2LTEuNmMwLC4xIDAsLjItLjEsLjUtMC0uMi0wLS4zLTAtLjV6Ii8+CjxwYXRoIGQ9Im0xLjMsOC43di0yLjRjMCwwIDAsMi41IDYuNywyLjUgNi43LDAgNi43LTIuNSA2LjctMi41djIuNGMwLDAgMCwyLjctNi44LDIuNy02LjYtMC02LjYtMi43LTYuNi0yLjd6Ii8+CjwvZz4KPC9zdmc+Cg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20s%20%3D%20%27dom.indexedDB.enabled%27%3B%0Athis._handleClick%20%3D%28%29%3D%3E%20cbu.setPrefs%28s%2C%20%21cbu.getPrefs%28s%29%29%3B%0A%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20val%20%3D%20cbu.getPrefs%28s%29%3B%20%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20var%20label%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-text%22%29%3B%0A%20%20%20icon.style.filter%20%3D%20val%20%3F%20%27%27%20%3A%20%27opacity%2850%25%29%27%3B%20%20%20%0A%20%20%20label.style.filter%20%3D%20val%20%3F%20%27%27%20%3A%20%27opacity%2850%25%29%27%3B%20%20%20%0A%20%20%20self.checked%20%3D%20val%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%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
Отсутствует
1 - экранируйте. Т.е., \/\/ - вместо //
Я видимо не очень понял принцип, но такой набор знаков /\ \/ \\// //\\ на выходе дает / / // //
А мне нужен слеш в другую сторону \
Помогите пожалуйста с конкретным примером:
c:\Downloads\test
что прописать в код кнопки, чтобы этот же путь отобразился в параметре about:config ?
2 - я эту кнопку потому и сделал, что кол-во отдельных кнопок разрослось до неприличия. Вот:
Спасибо за пример. Как я понял, там не string, а boolean. Не совсем понятно, что поменять, чтобы это работало для изменения string.
Отсутствует
А мне нужен слеш в другую сторону \
Ух, косяк. Пока не могу сообразить. Надо подумать.
UPD: Пока могу предложить \\\\ - прописывать для одного обратного слеша.
что поменять, чтобы это работало для изменения string.
Тоже надо подумать. Что-то у меня голова совсем не варит сегодня. Да еще и другой кнопкой занята.
Отредактировано turbot (22-07-2016 23:09:09)
Отсутствует
turbot
Я по-ламерски поковырялся немного. Если сделать в userChoice не \\\\ , а \\ , то кнопка будет реагировать цветом на значение параметра (по крайней мере, если он один, я другие закомментировал). А чекбокса действительно почему-то нет, но меня и изменение цвета устраивает.
Сделать бы теперь еще, чтобы этот мой единственный параметр менялся просто по клику на кнопку, а не через меню.
Отредактировано firefan (22-07-2016 23:50:06)
Отсутствует
Если сделать
Ну, это тоже костыли. В выходные подумаю, что сделать.
чтобы изменение параметра происходило просто по нажатию, циклично? В идеале, чтобы она тоже цвет меняла в зависимости от настройки по-умолчанию.
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%3ETest%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/svg+xml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iQ2FwYV8xIgogICB4PSIwcHgiCiAgIHk9IjBweCIKICAgdmlld0JveD0iMCAwIDU4LjIwMSA1OC4yMDEiCiAgIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDU4LjIwMSA1OC4yMDE7IgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkxIHIxMzcyNSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iMTQ5NzQ5LnN2ZyI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhNDciPjxyZGY6UkRGPjxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxkZWZzCiAgICAgaWQ9ImRlZnM0NSIgLz48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY4OSIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzQzIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSI0LjA1NDkxMzEiCiAgICAgaW5rc2NhcGU6Y3g9IjI5LjEwMDUiCiAgICAgaW5rc2NhcGU6Y3k9IjI5LjEwMDUiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJDYXBhXzEiIC8+PGcKICAgICBpZD0iZzMiCiAgICAgc3R5bGU9ImZpbGw6Izc5N2M3ZjtmaWxsLW9wYWNpdHk6MSI+PHBhdGgKICAgICAgIGQ9Ik0zMS43MDcsMzMuMDdjLTAuODcsMC4wMjctMS43NCwwLjA0Mi0yLjYwNiwwLjA0MmMtMC44NjksMC0xLjc0Mi0wLjAxNC0yLjYxNC0wLjA0MiAgIGMtNy4zNDEtMC4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxN0M3LjEwNCwyOS42ODUsNS40MDksMjguODk5LDQuMSwyOHY3LjExMXYwLjV2MC41VjM3LjRjMi44NDYsMi45NzEsMTIuMzk0LDUuNzExLDI1LDUuNzExICAgczIyLjE1NC0yLjc0LDI1LTUuNzExdi0xLjI4OXYtMC41di0wLjVWMjhjLTEuMzE4LDAuOTA1LTMuMDI4LDEuNjk3LTUuMDI1LDIuMzY3QzQ0Ljg2NSwzMS44MzksMzkuMDI3LDMyLjg3LDMxLjcwNywzMy4wN3oiCiAgICAgICBpZD0icGF0aDUiCiAgICAgICBzdHlsZT0iZmlsbDojNzk3YzdmO2ZpbGwtb3BhY2l0eToxIiAvPjxwYXRoCiAgICAgICBkPSJNNC4xLDE0Ljg4OVYyMnYwLjVWMjN2MS4yODljMi42MzgsMi43NTQsMTEuMDMzLDUuMzEsMjIuMjg2LDUuNjY4YzAuMTE1LDAuMDA0LDAuMjMzLDAuMDA1LDAuMzQ5LDAuMDA4ICAgYzAuMzI2LDAuMDA5LDAuNjUxLDAuMDE4LDAuOTgyLDAuMDIzQzI4LjE3NCwyOS45OTYsMjguNjM1LDMwLDI5LjEsMzBzMC45MjYtMC4wMDQsMS4zODMtMC4wMTEgICBjMC4zMy0wLjAwNSwwLjY1Ni0wLjAxNCwwLjk4Mi0wLjAyM2MwLjExNi0wLjAwMywwLjIzNC0wLjAwNSwwLjM0OS0wLjAwOGMxMS4yNTMtMC4zNTksMTkuNjQ4LTIuOTE1LDIyLjI4Ni01LjY2OFYyM3YtMC41VjIyICAgdi03LjExMUM0OS4yMzMsMTguMjMyLDM4Ljk0NCwyMCwyOS4xLDIwUzguOTY4LDE4LjIzMiw0LjEsMTQuODg5eiIKICAgICAgIGlkPSJwYXRoNyIKICAgICAgIHN0eWxlPSJmaWxsOiM3OTdjN2Y7ZmlsbC1vcGFjaXR5OjEiIC8+PHBhdGgKICAgICAgIGQ9Ik01My45NjUsOC41NDJDNTIuODQzLDQuMjQxLDQ0LjIxNSwwLDI5LjEsMEMxNC4wMjMsMCw1LjQwNCw0LjIyLDQuMjQ3LDguNTFDNC4xNjIsOC42NTcsNC4xLDguODE4LDQuMSw5djAuNXYxLjgwNiAgIEM2LjkzNywxNC4yNjcsMTYuNDE3LDE3LDI5LjEsMTdzMjIuMTY0LTIuNzMzLDI1LTUuNjk0VjkuNVY5QzU0LjEsOC44MzIsNTQuMDQ0LDguNjgxLDUzLjk2NSw4LjU0MnoiCiAgICAgICBpZD0icGF0aDkiCiAgICAgICBzdHlsZT0iZmlsbDojNzk3YzdmO2ZpbGwtb3BhY2l0eToxIiAvPjxwYXRoCiAgICAgICBkPSJNNC4xLDQxdjguMjAxYzAsMC4xNjIsMC4wNDMsMC4zMTUsMC4xMTcsMC40NTFjMS4xODEsNC44OTUsMTEuNzQ3LDguNTQ5LDI0Ljg4Myw4LjU0OWMxMy4xMDYsMCwyMy42NTUtMy42MzksMjQuODc1LTguNTE2ICAgYzAuMDgtMC4xNDQsMC4xMjUtMC4zMDksMC4xMjUtMC40ODR2LTguMTk5Yy00LjEzNSwyLjkxMS0xMi42NTUsNS4xOTktMjUsNS4xOTlDMTYuNzU0LDQ2LjIwMSw4LjIzNCw0My45MTEsNC4xLDQxeiIKICAgICAgIGlkPSJwYXRoMTEiCiAgICAgICBzdHlsZT0iZmlsbDojNzk3YzdmO2ZpbGwtb3BhY2l0eToxIiAvPjwvZz48ZwogICAgIGlkPSJnMTMiIC8+PGcKICAgICBpZD0iZzE1IiAvPjxnCiAgICAgaWQ9ImcxNyIgLz48ZwogICAgIGlkPSJnMTkiIC8+PGcKICAgICBpZD0iZzIxIiAvPjxnCiAgICAgaWQ9ImcyMyIgLz48ZwogICAgIGlkPSJnMjUiIC8+PGcKICAgICBpZD0iZzI3IiAvPjxnCiAgICAgaWQ9ImcyOSIgLz48ZwogICAgIGlkPSJnMzEiIC8+PGcKICAgICBpZD0iZzMzIiAvPjxnCiAgICAgaWQ9ImczNSIgLz48ZwogICAgIGlkPSJnMzciIC8+PGcKICAgICBpZD0iZzM5IiAvPjxnCiAgICAgaWQ9Imc0MSIgLz48L3N2Zz4%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20s%20%3D%20%27CB.test%27%3B%0Avar%20vals%20%3D%20%5B%0A%20%20%20%22test%5C%5Ctest%5C%5C1%22%2C%0A%20%20%20%22test%5C%5Ctest%5C%5C2%22%2C%0A%20%20%20%22test%5C%5Ctest%5C%5C3%22%2C%0A%20%20%20%22test%5C%5Ctest%5C%5C4%22%0A%5D%0Avar%20userChoice%20%3D%20vals%5B1%5D%3B%0A%0Athis._handleClick%20%3D%28%29%3D%3E%20cbu.setPrefs%28s%2C%20%28vals.length%20%3C%3D%20vals.indexOf%28cbu.getPrefs%28s%29%29%20+%201%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20vals%5B0%5D%20%3A%20vals%5Bvals.indexOf%28cbu.getPrefs%28s%29%29%20+%201%5D%29%3B%0A%0Afunction%20toggleImage%28%29%20%7B%0A%20%20%20var%20val%20%3D%20cbu.getPrefs%28s%29%3B%20%0A%20%20%20var%20icon%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-icon%22%29%3B%0A%20%20%20var%20label%20%3D%20self.ownerDocument.getAnonymousElementByAttribute%28self%2C%20%22class%22%2C%20%22toolbarbutton-text%22%29%3B%0A%20%20%20icon.style.filter%20%3D%20val%20%3D%3D%20userChoice%20%3F%20%27%27%20%3A%20%27hue-rotate%28140deg%29%20saturate%2810%29%20brightness%28.85%29%20contrast%283%29%27%3B%20%20%20%0A%20%20%20label.style.color%20%3D%20val%20%3D%3D%20userChoice%20%3F%20%27%27%20%3A%20%27red%27%3B%0A%20%20%20self.tooltipText%20%3D%20s%20+%20%27%3B%27%20+%20val%3B%0A%7D%3B%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28s%2C%20toggleImage%2C%20false%29%3B%0AaddDestructor%28%28%29%3D%3E%20gPrefService.removeObserver%28s%2C%20toggleImage%29%20%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
Отредактировано turbot (23-07-2016 00:58:54)
Отсутствует
Раскукоживатель коротких ссылок
ПКМ по самой кнопке - "раскукожит" ссылку из буфера обмена.
ЛКМ ?
Отсутствует
firefan
Не будет чекбокса у пункта в субменю и не будет значение параметра отображать в меню.
Исправил кое-как: Быстрое переключение параметров about:config, от 24.07.2016
Обратные слеши все равно надо экранировать. Т.е., \\ вместо \.
Отсутствует
Кнопка Автоматически открыть - закрыть меню опять стала открывать лишнее. Исправьте пожалуйста, кто может.
Вообще, если это несложно, устроит кнопка что бы открывались папки панели закладок, при наведении через...0,5сек. Этого будет вполне достаточно.
Отредактировано oleg.sgh (04-08-2016 19:29:08)
Отсутствует