egorsemenov06
не туда добавлено, ладно вот полный custom_script_win.js
// Этот скрипт работает в главном окне браузера если включено в настройках var ucf_custom_script_win = { initialized: false, unloadlisteners: [], load: function() { if (this.initialized) return; this.initialized = true; // this.specialwidgets.constructor(); // <-- Special Widgets this.autohidesidebar.constructor(); // <-- Auto Hide Sidebar /* ************************************************ */ this.googletranslate.constructor(); // Здесь может быть ваш код который сработает по событию "load" не раньше /* ************************************************ */ if (this.unloadlisteners.length < 1) return; window.addEventListener("unload", this, false); }, handleEvent: function(event) { this[event.type](event); }, unload: function() { window.removeEventListener("unload", this, false); this.unloadlisteners.forEach((str) => { try { this[str].destructor(); } catch (e) {} }); }, googletranslate: { constructor: function() { var lc = navigator.lastClick = {}, w = null, xhtmlns = 'http://www.w3.org/1999/xhtml'; var mouseUp = function(e) { if (e.button) return; lc.X = e.screenX - mozInnerScreenX; lc.Y = e.screenY - mozInnerScreenY; }; gBrowser.tabpanels.addEventListener('mouseup', mouseUp, false); this.destructor = function() { gBrowser.tabpanels.removeEventListener('mouseup', mouseUp, false); if (w) w.closeWin(); }; ucf_custom_script_win.unloadlisteners.push("googletranslate"); var createWindow = function(text, status, title, id, pos, size) { var win = window, doc = win.document, wId = 'ujs_window'+(id || ''); w = doc.getElementById(wId); var keyDown = function(e) {if (!e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode == 27)doc.getElementById(wId).closeWin();}; var mouseDown = function() {doc.getElementById(wId).closeWin();}; if (w) w.closeWin(); w = doc.createElementNS(xhtmlns, 'div'); w.setAttribute('style', 'position:fixed;display:block;visibility:hidden;left:0;top:0;width:auto;height:auto;border:1px solid gray;padding:2px;margin:0;z-index:99999;overflow:hidden;cursor:move;'+(typeof w.style.borderRadius === 'string' ? 'background-color:#eaeaea;padding-top:0px;border-radius:4px;box-shadow:0 0 15px rgba(0,0,0,.4);' : 'background:-o-skin("Window Skin");')); w.id = wId; w.closeWin = function() { doc.removeEventListener('keydown', keyDown, false); gBrowser.tabpanels.removeEventListener('mousedown', mouseDown, false); this.parentNode.removeChild(this); w = null; }; w.addEle = function(str, style) { var ele = doc.createElementNS(xhtmlns, 'div'); ele.setAttribute('style', style); if (str) { ele.innerHTML = str; for (var el, all = ele.getElementsByTagName('*'), i = all.length; i--;) { el = all[i]; if (/^(script|frame|iframe|applet|embed|object)$/i.test(el.nodeName)) { el.parentNode.removeChild(el); } else { for (var att = el.attributes, j = att.length; j--;) { if (/^on[a-z]+$/i.test(att[j].name))att[j].value = ''; } } } } return this.appendChild(ele); }; w.addEle1 = function(str, style) { var ele = doc.createElementNS(xhtmlns, 'textarea'); ele.setAttribute('style', style); if (str) { ele.innerHTML = str; for (var el, all = ele.getElementsByTagName('*'), i = all.length; i--;) { el = all[i]; if (/^(script|frame|iframe|applet|embed|object)$/i.test(el.nodeName)) { el.parentNode.removeChild(el); } else { for (var att = el.attributes, j = att.length; j--;) { if (/^on[a-z]+$/i.test(att[j].name))att[j].value = ''; } } } } return this.appendChild(ele); }; var img = doc.createElementNS(xhtmlns, 'div'); img.setAttribute('style', 'display:block;float:right;width:16px;height:16px;padding:0;margin-top:2px;margin-right:1px;border:none;cursor:pointer;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACQUlEQVR4Xm2SPUhbURTHfzfNJ4nU0Axx7CJCN2kQtIgVCtq6OdQuBUftWIQqFNsKDo6iHTqIqN3a0kklUKTS2AZrcOjioFtRjFWUfH+803cS9GHwB4dzcu75/+8L9xgaSEDbLXhaASzAyXAMn5/DHxwwjeJgKLRxd3Q0atxuLhGgWqmQmp9PJ7LZJ5Ow3WhQFweDG20LC1FfRwc3kUsm+T48fPIzl3s8VTdxxLt+/2FhdlZkc1MkmdR8Pba2ajlrz3z1+9OvIOaIfb7DwsSEyNKSyM6OSLksEo/rbw2ttadntV7Gnv3k86VfqskvmDzv7hZ580Zkelrk4kJqFIsii4satVrRs+rYmBQHBuRvS4u8g/fuCmDOz+HgAIWpKRgfh3AYhoZQ8Hqxjo4o9PdT3d1FcQEl8KoBnJ7C/j6KZkZGYG4OIhEUFed7erD29q69jGrd1qVBqcQVKgwEuMSEQhjtXRk4JvW/kM1i2WGMga4uzMoKBIOIfbNiolEC6+uU+/qQRALFA1QBlwVYxmBcLmhuxqytQSgEKu7t1dBavwKvbeINh/Has2IMqnXpem4bky6qWLdvZgaOj2FwEHNyoqG19vRMZ8jZs1+NOfsNcZS3EFvzeNL51laRe/dEYrFadsLpZeyZDx7P6QN4Btwx1OE1xO4HAquP2tsjAZ+Pm8gWi3xMpc6W8/kXPyAO/DM4oOsZa2pafdjZGXF7PAgOpXKZL4nE2XImcyUGMDSg63kbhgvgtYCq8+akIL4J3y7Fyn+DokZOnLlMyQAAAABJRU5ErkJggg==");background:-o-skin("Caption Close Button Skin");'); img.title = (win.navigator.language.indexOf('ru') == 0) ? '\u0417\u0430\u043A\u0440\u044B\u0442\u044C' : 'Close'; img.addEventListener('click', function() {this.parentNode.closeWin();}, false); w.appendChild(img); var title = w.addEle(title, 'display:table;color:#000;font:17px Times New Roman;width:auto;height:auto;padding:0;margin:0 2px;cursor:text;'); title.onclick = e => { e.preventDefault(); var url = e.target.href; // Здесь открываем url как хотим. var ctabpos = gBrowser.selectedTab._tPos +1; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); doc.getElementById(wId).closeWin(); }; var cnt = w.addEle1(text, 'display:block;border:1px solid #aaa;padding-bottom:3px;padding-left:3px;background-color:#fafcfe;color:#000;font:16px Times New Roman;width:310px;height:160px;overflow:auto;cursor:text;-moz-user-focus:normal;-moz-user-select:text;'); cnt.contentEditable="true"; cnt.context="contentAreaContextMenu"; w.addEle(status, 'display:table;font:12px Times New Roman;font-weight:bold;color:blue;width:auto;height:auto;padding-top:2px;margin:0 3px;cursor:pointer;'); w.addEventListener('mousedown', function(e) { if (e.target == w) { e.preventDefault(); var grabX = e.clientX, grabY = e.clientY, origX = parseInt(w.style.left), origY = parseInt(w.style.top); var mouseMove = function(ev) { w.style.left = origX+ev.clientX-grabX+'px'; w.style.top = origY+ev.clientY-grabY+'px'; }; doc.addEventListener('mousemove', mouseMove, false); doc.addEventListener('mouseup', function() {doc.removeEventListener('mousemove', mouseMove, false);}, false); } }, false); doc.documentElement.appendChild(w); if (size) { cnt.style.height = size.height; cnt.style.width = size.width; } else { for (var i = 3; i < 10; i++) { if (cnt.scrollHeight > cnt.offsetHeight || cnt.scrollWidth > cnt.offsetWidth) { cnt.style.height = 80*i+'px'; cnt.style.width = 160*i+'px'; } else break; } } var docEle = (doc.compatMode == 'CSS1Compat' && win.postMessage) ? doc.documentElement : doc.body; var mX = docEle.clientWidth-w.offsetWidth, mY = docEle.clientHeight-w.offsetHeight; if (mX < 0) {cnt.style.width = parseInt(cnt.style.width)+mX+'px'; mX = 0;} if (mY < 0) {cnt.style.height = parseInt(cnt.style.height)+mY+'px'; mY =0;} var hW = parseInt(w.offsetWidth/2); w.style.left = (pos && pos.X < mX+hW ? (pos.X > hW ? pos.X-hW : 0) : mX)+'px'; w.style.top = (pos && pos.Y+10 < mY ? pos.Y+10 : mY)+'px'; w.style.visibility = 'visible'; doc.addEventListener('keydown', keyDown, false); gBrowser.tabpanels.addEventListener('mousedown', mouseDown, false); return w; }; var getHash = function (txt) { TKK=eval('((function(){var a\x3d817046147;var b\x3d-335196159;return 410049+\x27.\x27+(a+b)})())'); function sM(a) { var b; if (null !== yr) b = yr; else { b = wr(String.fromCharCode(84)); var c = wr(String.fromCharCode(75)); b = [b(), b()]; b[1] = c(); b = (yr = window[b.join(c())] || "") || ""; } var d = wr(String.fromCharCode(116)), c = wr(String.fromCharCode(107)), d = [d(), d()]; d[1] = c(); c = "&" + d.join("") + "="; d = b.split("."); b = Number(d[0]) || 0; for (var e = [], f = 0, g = 0; g < a.length; g++) { var l = a.charCodeAt(g); 128 > l ? e[f++] = l : (2048 > l ? e[f++] = l >> 6 | 192 : (55296 == (l & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = l >> 18 | 240, e[f++] = l >> 12 & 63 | 128) : e[f++] = l >> 12 | 224, e[f++] = l >> 6 & 63 | 128), e[f++] = l & 63 | 128); } a = b; for (f = 0; f < e.length; f++) a += e[f], a = xr(a, "+-a^+6"); a = xr(a, "+-3^+b+-f"); a ^= Number(d[1]) || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return c + (a.toString() + "." + (a ^ b)); } var yr = null; var wr = function(a) { return function() { return a; }; }, xr = function(a, b) { for (var c = 0; c < b.length - 2; c += 3) { var d = b.charAt(c + 2), d = "a" <= d ? d.charCodeAt(0) - 87 : Number(d), d = "+" == b.charAt(c + 1) ? a >>> d : a << d; a = "+" == b.charAt(c) ? a + d & 4294967295 : a ^ d; } return a; }; return sM(txt); }; var ujs_google_translate = function (dir) { var lng = window.navigator.language.slice(0, 2), txt = gContextMenu.selectionInfo.fullText, l = dir.split('|'); var encTxt = encodeURIComponent(txt); var winWait = function(lng) {createWindow('', (lng == 'ru' ? 'Подождите идет перевод' : 'Wait, is going Translating')+'\u2026', 'Google Translate', '_gt', window.navigator.lastClick);}; if (txt) { winWait(lng); var xhr = new XMLHttpRequest(); var url = 'https://translate.google.com/translate_a/single?client=gtx&sl=' + l[0] + '&tl=' + l[1] + '&hl=' + lng + '&eotf=0&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t' + getHash(txt); var urlt = "http://translate.google.com/translate_t?text="+encTxt+"&sl=' + langFrom_google_text + '&tl=' + langTo_google_text +'&hl=' + lng + '&eotf=0&ujs=gtt"; xhr.open('POST', url, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8'); xhr.onreadystatechange = function() { try { if (xhr.readyState == 4 && xhr.status == 200) { var result = '', status = '', tmp = JSON.parse(xhr.responseText.replace(/\[(?=,)/g, '[0').replace(/,(?=,|\])/g, ',0').replace(/\\n/g, "<br />")); for (var i = 0, n; n = tmp[0][i]; i++) { if (n[0])result += n[0].toString(); }; status = tmp[8][0][0].toUpperCase() + ' -\u203A ' + l[1].toUpperCase(); createWindow(result, status, '<a href="'+urlt.replace(/&/g,'&')+'" target="_blank" style="display:inline;padding:0;margin:0;text-decoration:none;border:none;color:#009;font:16px Times New Roman;">Google Translate</a>', '_gt', window.navigator.lastClick); } } catch(e) {}; }; xhr.send('q=' + encodeURIComponent(txt)); } else { var urlt = gBrowser.currentURI.spec; var url = "http://translate.google.com/translate?u="+encodeURIComponent(urlt)+"&hl="+lng+"&langpair="+dir+"&tbb=1"; var ctabpos = gBrowser.selectedTab._tPos +1; gBrowser.moveTabTo(gBrowser.selectedTab = gBrowser.addWebTab(url), ctabpos); }; }; var contextMenu = document.getElementById("contentAreaContextMenu"); var nextEleMenu = document.getElementById("context-inspect"); var menuItem = document.createXULElement("menuitem"); menuItem.setAttribute("id", "context-ru-google-translate"); menuItem.setAttribute("label", "Перевести на русский"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAABBUlEQVR4Ac2RMU4DMRREB2MqihQpAkUaqnAduuQw4Sx03CGcJYIiDYqQ0lCsZ77535ZFcgAkRuPvV7zd/dLiz3N1PFb8hmRckrfELZrF9ONQ1B6Yz0MyM7S0O6zGkVprh/3+Kw/JzkHSpRpJKZkpr9fYbOx0cjVsCbWG31oHBM9mtt0q73ZcrdLhAMlYQKkUI22aqsNo8HKZAMQhvVaKSHWj2Q2aPU3mJQFY7nuHyvYFduP83WF3AJRfcPNYnr/Lp1G1uK4m9sno1LaUbnX/htf8BNzoneUD5NhjvLCMhURQSQ93QCZwXYjFwg3I0NZKrvoknQPMIHkt/jRAQKMeG2yX89/mB4EJbKbZxIhFAAAAAElFTkSuQmCC"); menuItem.addEventListener("command", function() {ujs_google_translate('auto|ru');}, false); contextMenu.insertBefore(menuItem, nextEleMenu); menuItem = document.createXULElement("menuitem"); menuItem.setAttribute("id", "context-en-google-translate"); menuItem.setAttribute("label", "Перевести на английский"); menuItem.setAttribute("class", "menuitem-iconic"); menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAAB5UlEQVR4AWOgPZg0c9+Oq2+qpx9LaQaiw4mNB27efbs2uXFNQh2Q4Zm9zSNth23MhqjGnXMC86vnHmUS4udxv7OvOd2yPE7PTlfCTk9GVVEoyJA7WI8dyPA0k3U1l+jJMV7CeThpTZeoKDdDUsvBPSff/V+6/P/Bvf///2+bdvU/EKRm/k9IBNIlfZe+LFrzvbsbyJ636pKkyQyQhoUb7tZNvPpw3/0/TfX/ISAm5n94BIiRm/n/xYsLd946ei4vajoiqDuRAejQf//+o4PQ0P9+fmhiQGVnrr1kXJNYG2zEzXDxDsPv3wy/fkFJoOTPn39+/fr/69e/37//AUX+/mXRkO458wWHDba2f8wswCyQ3N+/f//8/fP7z5+TV18w2Mdt6plzPiptx5Wr7/+/ffMzOR6kysjkt74hWMPfp06O+2dulZCeFZKwnkE4m8E8bN3i9aCQ+dxY96GrK6bkGJD9R1v3l6Y20NVW9kt+/v//ZdbcFwkxTVPPMQimM8XEqkb7a/zoqLxkH9v4zVyI5+///wyMmtKMmhJAnbLqQjHxaw5r2orOmZN5uj470Zahat6BKS7JzpmLBHXm8GhM5lCdcP7ai1ZpixZxk9NXXjKIFzOIFjAI54oY1vXuue5qmscw+AAAW0tKxtPoicEAAAAASUVORK5CYII="); menuItem.addEventListener("command", function() {ujs_google_translate('auto|en');}, false); contextMenu.insertBefore(menuItem, nextEleMenu); contextMenu.insertBefore(document.createXULElement("menuseparator"), nextEleMenu); } }, specialwidgets: { _timer: null, get Customizable() { delete this.Customizable; if ("createSpecialWidget" in CustomizableUI) return this.Customizable = CustomizableUI; var scope = null; try { scope = Components.utils.import("resource:///modules/CustomizableUI.jsm", {}).CustomizableUIInternal; } catch (e) { } return this.Customizable = scope; }, constructor: function() { if (!("CustomizableUI" in window) || !("gCustomizeMode" in window)) return; ucf_custom_script_win.unloadlisteners.push("specialwidgets"); window.addEventListener("customizationready", this, false); }, destructor: function() { window.removeEventListener("customizationready", this, false); }, handleEvent: function(event) { this[event.type](event); }, customizationchange: function() { clearTimeout(this._timer); this._timer = setTimeout(() => { this.createSpecialWidgets(); }, 1000); }, customizationready: function() { if (!this.Customizable) return; this.createSpecialWidgets(); window.addEventListener("customizationchange", this, false); window.addEventListener("customizationending", this, false); }, customizationending: function() { window.removeEventListener("customizationchange", this, false); window.removeEventListener("customizationending", this, false); }, createSpecialWidgets: function() { try { var fragment = document.createDocumentFragment(); if (this.findSpecialWidgets("spring")) { var spring = this.Customizable.createSpecialWidget("spring", document); spring.setAttribute("label", "Растягивающийся интервал"); fragment.appendChild(gCustomizeMode.wrapToolbarItem(spring, "palette")); } if (this.findSpecialWidgets("spacer")) { var spacer = this.Customizable.createSpecialWidget("spacer", document); spacer.setAttribute("label", "Интервал"); fragment.appendChild(gCustomizeMode.wrapToolbarItem(spacer, "palette")); } if (this.findSpecialWidgets("separator")) { var separator = this.Customizable.createSpecialWidget("separator", document); separator.setAttribute("label", "Разделитель"); fragment.appendChild(gCustomizeMode.wrapToolbarItem(separator, "palette")); } gCustomizeMode.visiblePalette.appendChild(fragment); } catch (e) {} }, findSpecialWidgets: function(string) { try { if (!gCustomizeMode.visiblePalette.querySelector(`toolbar${string}[id^="customizableui-special-${string}"]`)) return true; } catch (e) {} return false; } }, autohidesidebar: { sidebar: null, constructor: function() { var sidebar = this.sidebar = document.querySelector("#sidebar-box"); if (!sidebar) return; ["dragenter", "drop", "dragexit"].forEach((type) => { sidebar.addEventListener(type, this, false); }); ucf_custom_script_win.unloadlisteners.push("autohidesidebar"); }, destructor: function() { var sidebar = this.sidebar; ["dragenter", "drop", "dragexit"].forEach((type) => { sidebar.removeEventListener(type, this, false); }); }, handleEvent: function(event) { this[event.type](event); }, dragenter: function() { if (!this.sidebar.hasAttribute("sidebardrag")) this.sidebar.setAttribute("sidebardrag", "true"); }, drop: function() { if (this.sidebar.hasAttribute("sidebardrag")) this.sidebar.removeAttribute("sidebardrag"); }, dragexit: function(event) { var sidebar = this.sidebar; var boxObj = sidebar.getBoundingClientRect(), boxScrn = !sidebar.boxObject ? sidebar : sidebar.boxObject; if ((!event.relatedTarget || event.screenY <= (boxScrn.screenY + 5) || event.screenY >= (boxScrn.screenY + boxObj.height - 5) || event.screenX <= (boxScrn.screenX + 5) || event.screenX >= (boxScrn.screenX + boxObj.width - 5)) && sidebar.hasAttribute("sidebardrag")) sidebar.removeAttribute("sidebardrag"); } } }; if (window.document.readyState != "complete") { window.addEventListener("load", function load() { window.removeEventListener("load", load, false); ucf_custom_script_win.load(); }, false); } else ucf_custom_script_win.load();
Отсутствует
egorsemenov06
попробуйте пока вторую добавить в custom_script_win.js
ucf_custom_script_win.load
(this.ucf_img_scroll_zoom = { imgZoom: 190, // на сколько увеличить изображение из меню scrollZoom: 20, // на сколько увеличивать/уменьшать колесиком мыши scrollTop: 1, // или -1, переключение направление прокрутки для увеличение колёсиком init(that) { var popup = this.popup = document.querySelector("#contentAreaContextMenu"); if (!popup) return; popup.addEventListener("popupshowing", this); that.unloadlisteners.push("ucf_img_scroll_zoom"); }, receiveMessage(msg) { var container = document.documentElement .appendChild(document.createElement("div")); var image = container.appendChild(document.createXULElement("image")); image.style.cssText = "width: 100% !important; height: 100% !important;"; image.setAttribute("validate", "never"); var st = container.style; var dz = this.scrollZoom/100 * this.scrollTop; var currScale = 1, x, y, initialZoom = this.imgZoom/100 - 1; var hide, props = ["width", "height", "left", "top"], p = n => n + "px"; var set = (...args) => props.forEach((prop, ind) => st[prop] = p(args[ind])); (hide = () => { st.cssText = "position: fixed; display: none; z-index: 2147483647;"; currScale = 1; image.src = null; })(); container.onwheel = (e, ds = e.deltaY > 0 ? -dz : dz) => { if (currScale < .15 && ds < 0) return; st.transform = `scale(${currScale += ds})`; var {width, height, left, top, bottom, right} = container.getBoundingClientRect(); if (height < innerHeight) { if (top < 0) st.top = p(y -= top); if (bottom > innerHeight) st.top = p(y -= bottom - innerHeight); } if (width < innerWidth) { if (left < 0) st.left = p(x -= left); if (right > innerWidth) st.left = p(x -= right - innerWidth); } } (this.receiveMessage = msg => { var {src, width, height, left, top} = msg.data; image.src = src; left -= mozInnerScreenX; top -= mozInnerScreenY; set(width, height, x = left, y = top); st.display = "block"; container.onwheel(null, initialZoom); window.addEventListener("mousedown", hide, {once: true, capture: true}); })(msg); }, handleEvent(e) { if (!gContextMenu.onImage) return; var menuitem = document.createXULElement("menuitem"); menuitem.setAttribute("label", "Увеличить размер"); menuitem.className = "menuitem-iconic"; menuitem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADZElEQVR42oXSe0xbVRwH8N8597a35e7SAmUFukGhY66AMiNzw4GvTCQLCssc4pQsmTOa+ERMlrktW1zigpnEuWn8x2eMmiVGMBDCFjS+cJHEDIk8RoSNV1+3tLWX3t72nnO8sETJFrfvP7/k5Pw+Ob9fDoLrYi8ow9GFUbq+5aRLrGraqQcX6hlF2wkFEWn6EDIJAyQy9+3VT58cWb6PrmvmjGZS/FSHlxbXtbtLobGqJlPKMhNepWb0V8hKpi8FNd/gzCCogbdmvtg/8C9gz9+Eor5x5nn2tDOZ98Dx2i3C/uYai9mOGCxiDQIIg1/PgUCEhyvDMox9PXYBkPzaaoAzAFL0yle7ShtqO/eWJ9w1vJ1oGsVzYhTNATMQG4Q1G40ldDw6PB339fs7VgMmA0jnHfioo6F9Z3tDYYJzKSZKMYcDvAILiICfZUNYEYFixMKpKBk8MfTTasBsACnngU/6Wg4+VL/VFSOmBHAYY1BAhzAvgmyMEIkh0EUOBD1Eu49eStwA5D3z4TcPv9TYdHvxEhXSGgaEIMkJkKAS+ONmSKYolOVqMBlRSd8bv8v/AQXlJoiHUE5rZ1tFa/Nhj1uVrCaNMoQxYSaIqDxAGqAuQ2XZ1iS8HUTpkZMXe1eATOdtiCcJblGe1a3PnWp0uEvfv3tbeX5RhSet/q3wxh6xgAncZUmw2hxEryQx9/LHE7I2RV5HNudGFAtcZsuQd919u/kiz56JOwobcjd6xerqKnB4HIB4RvMzCM1DGj8X0GD64pL2Xdf850z+4djKC8wl24XUpj1P75sdfe/+sSHoq3uQnSuwa+s2Vy5uubd2jQWUTAYchJK8HpyIzvv7p/rMkV/OzPeeGEWi+x6LufiR573h8VO7Zr4n9fEZNeiqXHOofFvPsKPkS1fKsX5JU6uNZQh8Wh/hRcuvOC3/fLXrcGj52yOo7zzU9udvbzbN9uglggK2MhsnvfiE0tY9tfed7vM98D+x53tx1DdG0Z2b97Ejf3SRSiGGCysyENvdoipZa4+/8NmPp8+N+Ei2ZEVpQhG71rdcqFFozD+xcoQugFUvlDS8wWsl8Uebk5C79ujjHwyc6R/309ysDBRauEzhJkG9ErAdG0xEe6yVkwqcr+549/zZgcmQ7pAEkH2TDG6RfwCoJI0uEWJP5QAAAABJRU5ErkJggg=="); menuitem.setAttribute("oncommand", "handleCommand();"); e.target.append(menuitem); menuitem.handleCommand = () => this.cmd(); this.handleEvent = () => menuitem.hidden = !gContextMenu.onImage; }, cmd() { var msg = this.msg = "UCF:GetImageScreenRectForMosuseZoom"; var code = `(targetIdentifier => { var image = ChromeUtils.import("resource://gre/modules/ContentDOMReference.jsm") .ContentDOMReference.resolve(targetIdentifier); var mm = image.ownerGlobal.docShell.messageManager; var rect = image.getBoundingClientRect(); var win = image.ownerGlobal; var x = rect.left, y = rect.top; var parentFrame = win.frameElement; while (parentFrame) { win = parentFrame.ownerGlobal; let cstyle = win.getComputedStyle(parentFrame); let framerect = parentFrame.getBoundingClientRect(); x += framerect.left + parseFloat(cstyle.borderLeftWidth) + parseFloat(cstyle.paddingLeft); y += framerect.top + parseFloat(cstyle.borderTopWidth) + parseFloat(cstyle.paddingTop); parentFrame = win.frameElement; } x += win.mozInnerScreenX; y += win.mozInnerScreenY; var fullZoom = win.windowUtils.fullZoom; mm.sendAsyncMessage("${msg}", { src: image.currentSrc, left: x * fullZoom, top: y * fullZoom, width: rect.width * fullZoom, height: rect.height * fullZoom, } ); })(`; messageManager.addMessageListener(msg, this); (this.cmd = () => { var {osPid} = gContextMenu.actor.manager.browsingContext.currentWindowGlobal; if (osPid == -1) osPid = Services.appinfo.processID; for(var ind = 0, len = Services.ppmm.childCount; ind < len; ind++) { var pmm = Services.ppmm.getChildAt(ind); if (pmm.osPid == osPid) break; } pmm.loadProcessScript("data:;charset=utf-8," + encodeURIComponent( code + JSON.stringify(gContextMenu.targetIdentifier) + ")" ), false); })(); }, destructor() { this.popup.removeEventListener("popupshowing", this); if (this.msg) messageManager.removeMessageListener(this.msg, this); }, }).init(this);
Отредактировано Vitaliy V. (11-03-2021 20:55:22)
Отсутствует
contextsearch
ucf_custom_script_win.load
(this.contextsearch = { topic: "browser-search-engine-modified", hide: "browser.search.hiddenOneOffs", defaultImg: "chrome://browser/skin/search-engine-placeholder.png", searchSelect: null, popup: null, init(that) { var searchSelect = this.searchSelect = document.querySelector("#context-searchselect"); if (!searchSelect) return; var popup = this.popup = searchSelect.closest("menupopup"); popup.addEventListener("popupshowing", this); that.unloadlisteners.push("contextsearch"); }, destructor() { this.popup.removeEventListener("popupshowing", this); if (this.popupshowing == this.handler) { this.popup.removeEventListener("popuphidden", this); Services.obs.removeObserver(this, this.topic); Services.prefs.removeObserver(this.hide, this); } }, handleEvent(e) { this[e.type](e); }, popupshowing(e) { var popup = this.popup; var searchSelect = this.searchSelect; if (e.target != popup || searchSelect.hidden) return; var menu = document.createXULElement("menu"); menu.className = "menu-iconic"; var menupopup = document.createXULElement("menupopup"); menu.append(menupopup); menu.ePopup = menupopup; searchSelect.style.setProperty("display", "none", "important"); searchSelect.before(menu); menu.onclick = this.search.bind(this); this.handler = e => e.target != popup || (menu.hidden = searchSelect.hidden); this.handlerRebuild = e => this.handler(e) || this.rebuild(menu); this.popuphidden = ev => { if (ev.target != popup) return; menu.hidden = true; }; this.popup.addEventListener("popuphidden", this); this.rebuild(menu); }, async rebuild(menu) { var de = Services.search.defaultEngine; de = de.wrappedJSObject || de; this.setAttrs(menu, de, `Искать в ${de.name} или в ...`); menu.ePopup.textContent = ""; var pref = Services.prefs.getStringPref("browser.search.hiddenOneOffs"); var hiddenList = pref ? pref.split(",") : []; var engines = await Services.search.getVisibleEngines(); for (let engine of engines.filter(e => !hiddenList.includes(e.name))) { if (engine == de) continue; var menuitem = document.createXULElement("menuitem"); menuitem.className = "menuitem-iconic"; this.setAttrs(menuitem, engine); menu.ePopup.append(menuitem); } this.popupshowing = this.handler; Services.obs.addObserver(this, this.topic, false); Services.prefs.addObserver(this.hide, this); }, setAttrs(node, engine, label = engine.name) { node.engine = engine; node.setAttribute("label", label); node.setAttribute("image", engine.iconURI ? engine.iconURI.spec : this.defaultImg); }, observe() { this.popupshowing = this.handlerRebuild; Services.obs.removeObserver(this, this.topic); Services.prefs.removeObserver(this.hide, this); }, search(e) { var {engine} = e.target; if (!engine) return; var searchSelect = this.searchSelect; var submission = engine.getSubmission( searchSelect.searchTerms, null, "contextmenu" ); if (submission) { let tab = gBrowser.addTab(submission.uri.spec, { postData: submission.postData, index: (gBrowser.selectedTab._tPos + 1), triggeringPrincipal: searchSelect.principal }); if (e.button == 0) gBrowser.selectedTab = tab; } var popup = this.popup; e.button != 1 && popup.state == "open" && popup.hidePopup(); } }).init(this);
Отредактировано Vitaliy V. (06-02-2022 14:01:01)
Отсутствует
egorsemenov06
эти коды не подходят для user_chrome_files
слишком много переделывать придется, так что я пас.
Но кнопка прокси есть у меня в расширении add_toolbar_buttons
Отсутствует
egorsemenov06
Да эта тоже не слишком удобная, дело в том что
чтобы создать кнопку в user_chrome_files нужно использовать
метод CustomizableUI.createWidget в custom_script.js а это уже другая область,
этот код там просто так не заработает.
Если есть код где не нужно создавать кнопки,
ну или можно с кнопкой но где поменьше кода.
Вторую кнопку сделаю
Отсутствует
egorsemenov06
то что обещал в custom_script.js
try { ((img, preventClearThumbs) => { CustomizableUI.createWidget({ id: "bt-clear-history", label: "Очистить историю", tooltiptext: "Очистить историю", defaultArea: CustomizableUI.AREA_NAVBAR, onCreated: function(bt) { bt.image = img; }, onCommand: function(event) { var win = event.target.ownerDocument.defaultView; (preventClearThumbs || (g => { var key = "onClearHistory", obs = g.PageThumbsHistoryObserver, func = obs[key]; return preventClearThumbs = () => obs[key] = () => obs[key] = func; })(Cu.import("resource://gre/modules/PageThumbs.jsm", {})))(); win.PlacesUtils.history.clear(); var closedTabCount = win.SessionStore.getClosedTabCount(win); while(closedTabCount--) win.SessionStore.forgetClosedTab(win, 0); var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); alertsService.showAlertNotification(img, "История Очищена!", "", false); win.setTimeout(()=> alertsService.closeAlert(), 2000); } }); })("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH5AQWDCgXFmePvgAABJ1JREFUWMO9l2tsFFUUx/93ZnZnd7ul2+2bR2VBEAVEUhoowSp+KMQIRatBxQgRDMEEjB8wJlUJ8YOPGDFqRECi1apAgNgIvvAByqNiG4iGSKGmtrvSdvva9+zO3HuPHxRTEdrShT3fJnPPPb/5z5z/PcMwKF6smI0qX2kFmFIKTdlfVrfPwnUOZfCFT0oYnV2bkn5/nQhH7296YCkyCtAa7EX/QOhbYSR0Ho3WEonsokwCfBjogiFFgySERSw6TSaNh79aXs0yBtBiCbSlrHYBaiYpVRGPP2mZpitjAADw0vmOVK/JtwGQIhGfKi2z+qcVSzIHEJKEhOCHLKJWklLl8fgaZnA9YwAAcDQcC5uSDgIgmTQWgKjyWM3izAHsDPTIoGnWEZAibtl4JLzRDlXPGAAACKKzppSNACCMxJ3SNOcfqKrKHMCh7pBpCPkRAEmWZROJ+MZxuU4bAByruQc/r7gPjcvTN6ohe/z1m0oLZmVnnVYZG8ts9ojNmz/H5nZ3E8kKknItQDuhaZ+Xf9JA11wBALAE60tK2guAyLLGAPQuTxonUt1dB5L+9nutgYHt4PzGIzU1uC4AC+fMYuR0HgbAAYLV012ZuhC4RcRjGgkBHgmP5bHYNrdquq8pwKlHaljTg0tnQND2XJdrBxizAQBJCdAgtYnAY6HK7HLnempZr40G4LJJPBIt4injGA+HxpAQV/p6CMWucO6yIjb+NnqeYPZR+7odysStRJSmAqELfm7298krFrcrXF9c0jv1qQnOaWUsx6EZDlj9r1ASS3n746yw0J4eAJcyKYn+vGxGvh4pWOeL3lqdlV+YZ+nKxT6SRg74wPssqVZ3nVjJtjxTkYYCBBOM/ReAManM8oR9G0q1KTORq9vk/1tYxDywBurB1U0bHivzWL9uwLzpnqv3gbWlRWx5Sf6bqlNbxbJUheXayT3XG/aV2Qqy3UIbdkBgNgmbt4Up+nMgHBLCiFStOojvTgZHbkQHX164aPpMzx6HEzaXk+wOh1A1ha7O4xSdQ/OcZ4q9nqDtYiR71236JvLOrrPDAzTvvj3r5knZPzp0ZXb6fmsHFD0hmb7vt99Dj85c8unwRvRDU0/CSIq9AGTaAGQCIursDASOnmxuHflZcLx+/sTyGbnNqsK86TKYljx36mx4waI1x3siBo3Mik1L+uMJvj9tAQipji7jha27W3sHFwcAdajE7v4klc/wdhZ47Q8xxvRRFuddPcnXPv4i8PaWDzr4pfeHBGjtSGDiOEdwSqnb43Zp84Z7Zf/agaSYEAgJSZGe/tR7dQ3+zbVvnDOueh64GHtenV10d2Vxg8uhzh3JektoF84HUHumpb2p8fRA25b6P+JXWquOZEN/ZzTuG+8+PqHYeZemsvzLgJMkMhlj/xxukgupfK/q3i9XP3vCHGrvEQEEghYaTwd7fePdh0sKnZPsGhsHMPb3nADOGNTOPuzjnHfE4ryp+Uzo6Sc2N332Vv0vIp6k0Y9kl4av2IY7yvNyVi67YU5JgXNyypQxLqWVl2OfTMx1bnXtka+lJNnmTxntQYtwnYMNeoBR/z/+Bdn0Q21KgEksAAAAAElFTkSuQmCC", null); } catch(e) {}
Открыть в другом брузере
async_run_applications https://github.com/VitaliyVstyle/Vitali … xperiments
запуск приложений с аргументами, если нужно открыть текущую страницу
в аргументы добавляем %OpenCurrentURI
если ссылку из буфера то %OpenClipboardURI
ну и любые другие аргументы для конкретного приложения можно использовать
Отсутствует
Как прикрутить иконки к приложениям в async_run_applications
Разве что стилем, в расширении это не предусмотрено, то как сделано в вашей кнопке
подходит только для ...
#u-external-application menuitem::before { width: 16px !important; height: 16px !important; display: -moz-box !important; margin-inline-start: 5px !important;/* отступ слева для иконок, для linux 0px */ margin-inline-end: -21px !important;/* для linux -16px */ position: relative !important; background-color: transparent !important; background-position: center !important; background-size: 16px !important; background-repeat: no-repeat !important; } /* далее пример */ #u-external-application menuitem[label="Открыть в Firefox"]::before { content: "" !important; background-image: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16' viewBox='0 0 48 48'><g><path d='M 2.438,0 C 1.087,0 0,1.088 0,2.438 V 45.56 C 0,46.91 1.087,48 2.438,48 H 45.56 C 46.91,48 48,46.91 48,45.56 V 2.438 C 48,1.088 46.91,0 45.56,0 Z' style='fill:rgb(146,69,101);fill-opacity:1;' /><path style='opacity:0.25;fill:rgb(0,0,0);' d='M 24,3 11.1,45 14.1,48 H 45.58 C 46.93,48 48,46.9 48,45.53 V 22.2 L 45,19.2 39,18 Z'/><path style='fill:rgb(255,255,255);' d='M 45,19.05 C 45.09,19.34 36.05,30.02 35.96,30.3 35.86,30.57 37.21,44.81 36.97,45 36.76,45.15 24.28,39.43 24,39.43 23.73,39.43 11.25,45.16 11.03,45 10.79,44.81 12.11,30.57 12.02,30.3 11.94,30.02 2.911,19.34 3.001,19.05 3.087,18.77 16.37,15.69 16.6,15.53 16.82,15.35 23.72,3 24,3 24.28,3 31.18,15.35 31.4,15.53 31.63,15.69 44.88,18.75 45,19.05' /></g></svg>") !important; }
верхнее правило повторять не надо, только пример изменяя [label="Открыть в Firefox"]
и иконку
Отредактировано Vitaliy V. (23-04-2020 14:25:45)
Отсутствует
Vitaliy V.
А вы в свое расширение аргумент для открытия выделенного текста добавить можете? Что бы выделенный текст передавать во внешнюю программу.
А то с этим туго у расширений.
Есть несколько с установкой внешних модулей, например run-with, external-application и еще видел похожие.
Есть передача текста из редактируемых полей и даже с возвратом модифицированного текста textern. Что само по себе удивительно.
Есть передача ссылок или URL-а вкладки и таких расширений как грязи open in, open with.
А вот простой передачи выделенного текста с аргументами, без внешних модулей, не видел.
Отредактировано _zt (23-04-2020 21:29:35)
Отсутствует
Прокси
добавление прокси в контекстном меню
(this.contextproxy = { img: "data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' height='16' width='16' viewBox='0 0 48 48'><g><rect x='0' y='0' width='48' height='48' rx='3' ry='3' style='fill:rgb(209, 8, 3);'/><path style='opacity:0.25;fill:black;' d='M 16.8,17.6 23.1,23.9 8,26 6.4,32.2 11.4,37.2 3.7,44.8 6.9,48 45,48 C 46.7,48 48,46.7 48,45 V 20 L 31.4,3.4'/><path style='fill:white;' d='M 17.4,3 C 16.7,3 16.2,3.82 16.2,4.91 V 15.9 C 16.2,17 16.7,17.8 17.4,17.8 H 30.6 C 31.3,17.8 31.8,17 31.8,15.9 V 4.91 C 31.8,3.82 31.3,3 30.6,3 H 17.4 M 22.4,20.5 V 23.7 H 6.41 V 32.2 H 9.35 V 28.2 H 22.4 V 32.4 H 25.5 V 28.2 H 38.5 V 32.4 H 41.5 V 23.7 H 25.5 V 20.5 H 22.4 M 4.23,35.1 C 3.55,35.1 3,35.9 3,37.1 V 43 C 3,44.1 3.55,45 4.23,45 H 12.1 C 12.8,45 13.3,44.1 13.3,43 V 37.1 C 13.3,35.9 12.8,35.1 12.1,35.1 H 4.23 M 19.9,35.1 C 19.2,35.1 18.7,35.9 18.7,37.1 V 43 C 18.7,44.1 19.2,45 19.9,45 H 27.8 C 28.5,45 29,44.1 29,43 V 37.1 C 29,35.9 28.5,35.1 27.8,35.1 H 19.9 M 35.9,35.1 C 35.2,35.1 34.7,35.9 34.7,37.1 V 43 C 34.7,44.1 35.2,45 35.9,45 H 43.7 C 44.4,45 45,44.1 45,43 V 37.1 C 45,35.9 44.4,35.1 43.7,35.1 H 35.9' /></g></svg>", init(that) { var contextMenu = this.contextMenu = document.querySelector("#contentAreaContextMenu"); if (!contextMenu) return; contextMenu.addEventListener("popupshowing", this); that.unloadlisteners.push("contextproxy"); }, destructor() { this.contextMenu.removeEventListener("popupshowing", this); this.contextMenu.removeEventListener("popuphiding", this); }, handleEvent(e) { if (e.target != this.contextMenu || !gContextMenu.isContentSelected) return; var menuitem = document.createXULElement("menuitem"); menuitem.setAttribute("label", "Добавить прокси"); menuitem.className = "menuitem-iconic"; menuitem.setAttribute("image", this.img); menuitem.onclick = this.addNewProxy.bind(this); (this.contextMenu.querySelector("menuseparator#context-sep-selectall") || this.contextMenu.lastElementChild).after(menuitem); this.popupshowing = evt => { if (evt.target != this.contextMenu) return; menuitem.hidden = !gContextMenu.isContentSelected; }; this.popuphiding = evt => { if (evt.target != this.contextMenu) return; menuitem.hidden = true; }; this.contextMenu.addEventListener("popuphiding", this); this.handleEvent = e => { this[e.type](e); }; }, addNewProxy(e) { var sel = gContextMenu.selectionInfo.fullText; sel = sel.trim().replace(/\s+/g, ":"); var prefs = Services.prefs, lab; if (sel.length < 6 && isFinite(sel)) { lab = "порт", sel = +sel; prefs.setIntPref("network.proxy.http_port", sel); prefs.setIntPref("network.proxy.ssl_port", sel); prefs.setIntPref("network.proxy.ftp_port", sel); prefs.setIntPref("network.proxy.socks_port", sel); } else if (sel.length > 5 && !(/:/.test(sel)) && sel.split(".").length == 4) { lab = "адрес"; prefs.setStringPref("network.proxy.http", sel); prefs.setStringPref("network.proxy.ssl", sel); prefs.setStringPref("network.proxy.ftp", sel); prefs.setStringPref("network.proxy.socks", sel); } else if (sel.length > 5 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4) { lab = "адрес и порт"; var arr = sel.split(":"), IP = arr[0], port = +arr[1]; prefs.setIntPref("network.proxy.http_port", port); prefs.setStringPref("network.proxy.http", IP); prefs.setIntPref("network.proxy.ssl_port", port); prefs.setStringPref("network.proxy.ssl", IP); prefs.setIntPref("network.proxy.ftp_port", port); prefs.setStringPref("network.proxy.ftp", IP); prefs.setIntPref("network.proxy.socks_port", port); prefs.setStringPref("network.proxy.socks", IP); } else return; if (prefs.getIntPref("network.proxy.type") != 1) prefs.setIntPref("network.proxy.type", 1); var mainPopupSet = document.querySelector("#mainPopupSet"); var tooltip = document.createXULElement("tooltip"); tooltip.style.cssText = "font-size: 1.2em !important; -moz-box-orient: horizontal; text-align: center; pointer-events: none; -moz-box-align: center !important;"; tooltip.label = " Установлен " + lab + " прокси: " + sel; var image = document.createXULElement("image"); image.setAttribute("src", this.img); tooltip.firstElementChild.before(image); mainPopupSet.append(tooltip); tooltip.openPopup(e.target.parentNode, "before_start"); setTimeout(() => tooltip.remove(), 3000); } }).init(this);
Отредактировано Vitaliy V. (03-06-2021 14:23:46)
Отсутствует
Vitaliy V.
Для поисковика Everything. Если помните, вы мне делали биндинг, но 78 грядет и биндинг отвалится. Да и просто текст в блокнот отправлять можно было бы. Но главное поиск.
Отсутствует
egorsemenov06
ну там вроде как комментарий есть // очистить кэш ....
или вот так вдруг ещё чего надумаете чистить
var itemsToClear = [ "cookies", "history", "formdata", "sessions", "cache", "downloads", "offlineApps", "pluginData", "siteSettings", ]; var range = win.Sanitizer.getClearRange(4); win.Sanitizer.sanitize(itemsToClear, { ignoreTimespan: !range, range, });
Отредактировано Vitaliy V. (24-04-2020 21:37:54)
Отсутствует
egorsemenov06
Ну так я и дал код чтобы добавить туда...
Ну да ладно можно и лишнее убрать оттуда
try { ((img, preventClearThumbs) => { CustomizableUI.createWidget({ id: "bt-clear-history", label: "Очистить историю", tooltiptext: "Очистить историю", defaultArea: CustomizableUI.AREA_NAVBAR, onCreated: function(bt) { bt.image = img; }, onCommand: function(event) { var win = event.target.ownerDocument.defaultView; (preventClearThumbs || (g => { var key = "onClearHistory", obs = g.PageThumbsHistoryObserver, func = obs[key]; return preventClearThumbs = () => obs[key] = () => obs[key] = func; })(Cu.import("resource://gre/modules/PageThumbs.jsm", {})))(); var itemsToClear = [ "history", "cache", ]; var range = win.Sanitizer.getClearRange(0); win.Sanitizer.sanitize(itemsToClear, { ignoreTimespan: !range, range, }).then(() => { var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); alertsService.showAlertNotification(img, "История Очищена!", "", false); win.setTimeout(()=> alertsService.closeAlert(), 2000); }); } }); })("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH5AQWDCgXFmePvgAABJ1JREFUWMO9l2tsFFUUx/93ZnZnd7ul2+2bR2VBEAVEUhoowSp+KMQIRatBxQgRDMEEjB8wJlUJ8YOPGDFqRECi1apAgNgIvvAByqNiG4iGSKGmtrvSdvva9+zO3HuPHxRTEdrShT3fJnPPPb/5z5z/PcMwKF6smI0qX2kFmFIKTdlfVrfPwnUOZfCFT0oYnV2bkn5/nQhH7296YCkyCtAa7EX/QOhbYSR0Ho3WEonsokwCfBjogiFFgySERSw6TSaNh79aXs0yBtBiCbSlrHYBaiYpVRGPP2mZpitjAADw0vmOVK/JtwGQIhGfKi2z+qcVSzIHEJKEhOCHLKJWklLl8fgaZnA9YwAAcDQcC5uSDgIgmTQWgKjyWM3izAHsDPTIoGnWEZAibtl4JLzRDlXPGAAACKKzppSNACCMxJ3SNOcfqKrKHMCh7pBpCPkRAEmWZROJ+MZxuU4bAByruQc/r7gPjcvTN6ohe/z1m0oLZmVnnVYZG8ts9ojNmz/H5nZ3E8kKknItQDuhaZ+Xf9JA11wBALAE60tK2guAyLLGAPQuTxonUt1dB5L+9nutgYHt4PzGIzU1uC4AC+fMYuR0HgbAAYLV012ZuhC4RcRjGgkBHgmP5bHYNrdquq8pwKlHaljTg0tnQND2XJdrBxizAQBJCdAgtYnAY6HK7HLnempZr40G4LJJPBIt4injGA+HxpAQV/p6CMWucO6yIjb+NnqeYPZR+7odysStRJSmAqELfm7298krFrcrXF9c0jv1qQnOaWUsx6EZDlj9r1ASS3n746yw0J4eAJcyKYn+vGxGvh4pWOeL3lqdlV+YZ+nKxT6SRg74wPssqVZ3nVjJtjxTkYYCBBOM/ReAManM8oR9G0q1KTORq9vk/1tYxDywBurB1U0bHivzWL9uwLzpnqv3gbWlRWx5Sf6bqlNbxbJUheXayT3XG/aV2Qqy3UIbdkBgNgmbt4Up+nMgHBLCiFStOojvTgZHbkQHX164aPpMzx6HEzaXk+wOh1A1ha7O4xSdQ/OcZ4q9nqDtYiR71236JvLOrrPDAzTvvj3r5knZPzp0ZXb6fmsHFD0hmb7vt99Dj85c8unwRvRDU0/CSIq9AGTaAGQCIursDASOnmxuHflZcLx+/sTyGbnNqsK86TKYljx36mx4waI1x3siBo3Mik1L+uMJvj9tAQipji7jha27W3sHFwcAdajE7v4klc/wdhZ47Q8xxvRRFuddPcnXPv4i8PaWDzr4pfeHBGjtSGDiOEdwSqnb43Zp84Z7Zf/agaSYEAgJSZGe/tR7dQ3+zbVvnDOueh64GHtenV10d2Vxg8uhzh3JektoF84HUHumpb2p8fRA25b6P+JXWquOZEN/ZzTuG+8+PqHYeZemsvzLgJMkMhlj/xxukgupfK/q3i9XP3vCHGrvEQEEghYaTwd7fePdh0sKnZPsGhsHMPb3nADOGNTOPuzjnHfE4ryp+Uzo6Sc2N332Vv0vIp6k0Y9kl4av2IY7yvNyVi67YU5JgXNyypQxLqWVl2OfTMx1bnXtka+lJNnmTxntQYtwnYMNeoBR/z/+Bdn0Q21KgEksAAAAAElFTkSuQmCC", null); } catch(e) {}
Отсутствует
Здравствуйте.
Win7 64. FF 75(64). Classic CSS tweaks for Firefox Quantum v3.0.8
Проблема, что с Classic CSS не могу выделить данные из адресной строки, нету графического отображения выделения ( не выделяется синим цветов, выделенный текст).
Удалял папку chrome, проблема исчезает.
Если поставить курсор на адресную строку, нажать ctrl+A + ctrl+C, то в буфер обмена текст копируется, но то что текст выделился, отображения нет.
В чём может быть проблема?
https://yadi.sk/d/fP4I4SLOrZnMZw файл userChrome.css .
Отсутствует
Привет. Подскажите, пожалуйста, как увеличить высоту navbar'a и всех его элементов?
Если просто задать #nav-bar {height: 55px !important;} то это только увеличивает сам высоту, а нужно еще и чтобы все элементы (иконки, адресная строка, текст и т.п) увеличивались.
И кто знает, есть ли способ для последних версий ff сделать так, чтобы панель закладок показывалась только для новой вкладки (как в хроме)? Все способы из гугла перестали работать после обновы firefox(
Отредактировано eksman (25-04-2020 14:57:03)
Отсутствует
glok пишет: Если поставить курсор на адресную строку, нажать ctrl+A + ctrl+C, то в буфер обмена текст копируется, но то что текст выделился, отображения нет.
Доброго здравия товарищи!
Скачал ваш userChrome.css, закинул взамен userChrome.css, только что скачанного свежего архива Classic CSS tweaks for Firefox Quantum v3.0.8, и такой проблемы не увидел. Ну разве что я неправильно вас понял.
А не проще ли, копировать в буфер обмена без манипуляций с ctrl+A + ctrl+C, добавив через ПКМ в адресную строку значок "Копировать ссылку".
eksman пишет: как увеличить высоту navbar'a и всех его элементов?
Может выбрать мобильные значки.
eksman пишет: чтобы панель закладок показывалась только для новой вкладки (как в хроме)?
После удаления поддержки биндингов, такого способа с userChrome.css не существует, скриптов тоже пока не попадалось. Разве что можете попробовать, не совсем то конечно, стиль от Aris-а
Отредактировано sandro79 (25-04-2020 16:25:37)
Отсутствует
Может выбрать мобильные значки.
Да, знаю про это. Но не то, что именно мне нужно. Там еще и tabbar затрагивается, да и в целом не то.
Мне надо бы именно navbar увеличить, но чтобы было красиво, иконки нормально смотрелись и т.п
Я пробовал играться с
стиль от Aris-а
Лучше чем ничего, авось пригодится, спасибо.
Отсутствует
Мне надо бы именно navbar увеличить, но чтобы было красиво, иконки нормально смотрелись
Попробуйте так:
/* Большие значки на панели навигации */ toolbar .toolbarbutton-1 > .toolbarbutton-icon, toolbar .toolbarbutton-1 > .toolbarbutton-badge-stack { padding: calc(var(--toolbarbutton-inner-padding) - 2px) !important; } toolbar .toolbarbutton-1 > .toolbarbutton-badge-stack > .toolbarbutton-icon { width: 20px !important; height: 20px !important; } /* Зум панели навигации */ #nav-bar .toolbarbutton-1 { padding-top: 3px !important; padding-bottom: 3px !important; }
Отредактировано kokoss (25-04-2020 18:19:46)
Win7
Отсутствует
Имеется некоторая размытость, но это и понятно почему так (по другому видимо не сделать
Размытость чего? Если иконок, то у меня в 75 не размыто!
Отредактировано kokoss (25-04-2020 21:48:39)
Win7
Отсутствует
eksman пишетИмеется некоторая размытость, но это и понятно почему так (по другому видимо не сделать
Размытость чего? Если иконок, то у меня в 75 не размыто!
Да, иконки расширений слега размыты. Ну это не страшно.
eksman
Вы в персонализации большие значки включали? Попробуйте изменить размер там.
ага, включал, не то Мне больше размер нужен Но уже вопрос решили выше.
Отсутствует
А не проще ли, копировать в буфер обмена без манипуляций с ctrl+A + ctrl+C, добавив через ПКМ в адресную строку значок "Копировать ссылку".
Не всегда всю ссылку целиком надо копировать, а только какую нибудь часть, а я не вижу, что я выделяю.
Отсутствует
Там 3.0.9 вышла, попробуйте ее. Там, судя по треду в багрепортах, как раз что то с выделением правили
Скачал 3.11. Проблема осталась.
Хотя, поставил чистый css, ничего не менял, текст выделяется.
Стоит подправить userchrome, сразу появляется проблема.
Вот этот параметр ломает. @import "./css/tabs/tabs_below_navigation_toolbar_fx74.css"; /**/
Отредактировано glok (01-05-2020 14:59:28)
Отсутствует
Vitaliy V.
В 76 версии не работает ваш код кнопки Открыть папку профиля и Перезагрузка,посмотрите пожалуйста.
Отсутствует