Приветствую ! Ребята подскажите пожалуйста , кнопку/код , которая/й запрещает на сайте сторонние запросы исключая при этом гугл капчу, аналог third-party для adblock. Может есть кнопка замена adblock/ublock0 ?
Добавлено 11-11-2017 20:21:25
Хотелось бы еще узнать, если кнопка аналог расширений https://addons.mozilla.org/ru/firefox/addon/tile-tabs/ и панели закладок https://addons.mozilla.org/ru/firefox/a … serprofile ?
Отредактировано cookiefox (11-11-2017 20:23:48)
Отсутствует
В ESR 52 плохо работает CB Mouse Gestures+
Отредактировано Mishania (15-11-2017 17:52:37)
Отсутствует
В Firefox 57 не работают кнопки, отвечающие за запуск внешних программ/батников.
Например Запуск программы( Firefox24+ ) от 28.01.2017
Или, к примеру, такой код, работающий на 55:
/*CODE*/ var prgpath="C:\\Portable\\test.cmd"; var args = ['']; var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(prgpath); var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length)
Отсутствует
Coroner
Научите как установить CB в 57?? Пробовал custom_buttons-0.0.5.8.9-fixed7pre, и отключал совместимость. Не завелось.
Отсутствует
Научите как установить CB в 57?? Пробовал custom_buttons-0.0.5.8.9-fixed7pre, и отключал совместимость. Не завелось.
У меня сейчас закладки на нужные комментарии нет, поэтому сейчас скину в личку ссылку на инструкцию "как у меня делалось".
Делал вроде с custom_buttons-0.0.5.8.9-fixed6pre, но думаю что без разницы.
Отсутствует
и отключал совместимость. Не завелось.
Старая распорка от совместимости более не работает, нужна новая.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Или, к примеру, такой код, работающий на 55:
скрытый текстВыделить кодКод:
/*CODE*/ var prgpath="C:\\Portable\\test.cmd"; var args = ['']; var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(prgpath); var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); process.init(file); process.run(false, args, args.length)
nsILocalFile выпилен в Firefox 57
Если для кнопки не планируется устанавливать её ещё и на лису древнее чем Firefox 14,
то просто замени nsILocalFile на nsIFile
А если такая вероятность имеется, то пиши что-то типа
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile || Components.interfaces.nsIFile);
Отсутствует
В Firefox 57 должны работать обе версии, без визуальных отличий.
В свежих Nightly – только custom_buttons-0.0.5.8.9-fixed7pre.xpi.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Dumby, спасибо, добрый человек Первый вариант работает, второй не пробовал, но и не понадобится!
Infocatcher, спасибо , вопрос решился, на 57 работают обе версии, на свежих Nightly — действительно нужно custom_buttons-0.0.5.8.9-fixed7pre.xpi
Отсутствует
"Переключаться на левую вкладку после закрытии текущей вкладки" посмотрите ато мозиловцы совсем все поломали.
// Переключаться на левую вкладку после закрытии текущей вкладки, от 22.08.2013. ................................ function tabCloseHandler(e) { var tab = e.target; if ( tab == gBrowser.mCurrentTab ) { if ( !gBrowser.visibleTabs.length ) gBrowser.addTab("about:blank"); else if ( !tab.hasAttribute('first-visible-tab') ) { gBrowser.mTabContainer.advanceSelectedTab(-1,true) }; } } addEventListener("TabClose", tabCloseHandler, true, gBrowser.tabContainer );
Отредактировано broker (22-11-2017 16:15:33)
Отсутствует
Народ, нельзя ничего исправить? или тема умерла?
Попробуй обновить кнопку: forum.mozilla-russia.org/viewtopic.php? … 40#p493040
A так да, мало кто ответит) тема при смерти.
Здесь хоть кто то ответит: forum.mozilla-russia.org/viewtopic.php? … 81#p748081
Отредактировано Gladius333 (22-11-2017 11:55:15)
Отсутствует
Есть несколько отвалившихся кнопок.
Может кто поправит
// Кнопка для управления масштабом страницы в адресной строке, от 24.11.2016. .......................................................................... (()=> { // Удалить из адресной строки FF51 стандартную кнопку масштаба .... var but = document.getElementById('urlbar-zoom-button'); if (but) but.style.display = "none"; // Создать в адресной строке кнопку масштаба .... var zoomButton = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons"); urlbarIcons.insertBefore(zoomButton, urlbarIcons.lastChild); // перед последней кнопкой адресной строки addDestructor(()=> zoomButton.remove()); updateZoomButton(); zoomButton.id = "zoomButton"; zoomButton.style.cssText = "-moz-appearance: none; border: 0; margin-right: -6px;"; // Css стиль для кнопки масштаба zoomButton.tooltipText = "Л: Менять масштаб страницы или только текста\nС: Единый масштаб для всех страниц \nП: Сбросить масштаб на 100% "; // Отслеживать клики на кнопке масштаба .... addEventListener("click", e=> { if ( e.button == 0 ) ZoomManager.toggleZoom(); // переключить режим изменения масштаба if ( e.button == 1 ) { // единый масштаб для всех страниц cbu.isPref("CB.zoom.allEvenly", false); cbu.setPrefs("CB.zoom.allEvenly", !cbu.getPrefs("CB.zoom.allEvenly") ); cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ); updateZoomButton(); } if ( e.button == 2 ) { e.preventDefault(); FullZoom.reset(); }; // сбросить масштаб }, false, zoomButton); // Менять масштаб колесиком мыши на кнопке масштаба .... addEventListener("DOMMouseScroll", e=> { e.detail > 0 ? FullZoom.enlarge() : FullZoom.reduce(); }, false, zoomButton); // Следим за изменением масштаба и запускаем обновление кнопки .... var str = "{ setTimeout(()=> { updateZoomButton() }, 50);"; var handleEvent = parseInt(Services.appinfo.version) > 33 ? FullZoom.handleEvent : FullZoom._handleMouseScrolled; var array = [FullZoom.reset, FullZoom.reduce, FullZoom.enlarge, ZoomManager.toggleZoom, handleEvent]; array.forEach(func=> { setTimeout(()=> { eval( (func.toString().replace('_', '.').match(/function ([^(]*)\(/)[1] + " = " + func.toString().replace("{", str)) )}, 50) }); addDestructor(()=> { array.forEach(func=> { eval( (func.toString().replace('_', '.').match(/function ([^(]*)\(/)[1] + " = " + func.toString()).replace(str,"{") ) }); }); // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба .... function updateZoomButton(e) { zoomButton.label = Math.round(ZoomManager.zoom*100) + "%"; setTimeout(()=> { zoomButton.style.fontWeight = ZoomManager.useFullZoom ? '' : 'bold'; zoomButton.style.color = cbu.getPrefs("CB.zoom.allEvenly") ? "red" : ""; }, 5); // запомнить текущий масштаб в 'about:config' if ( e == undefined ) { try { window.clearTimeout(zoomButton.prefTimeout) } catch(e) {}; zoomButton.prefTimeout = window.setTimeout(()=> { cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ) }, 250); } }; // Устанавливать единый масштаб для всех страниц если это разрешено в 'about:config' .... addEventListener("TabAttrModified", e=> { if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return; if ( cbu.getPrefs("CB.zoom.allEvenly") && content.location.protocol.startsWith("http") ) { var value = cbu.getPrefs("CB.zoom.Percent"); if ( ZoomManager.zoom.toFixed(2) == value ) return; setTimeout(()=> { gBrowser.markupDocumentViewer[ZoomManager.useFullZoom ? 'fullZoom' : 'textZoom'] = value; updateZoomButton(e); }, 0); } else updateZoomButton(e); }, true, gBrowser.tabContainer); })(); // Добавить подменю "Поиск изображения в ..." в контекстном меню изображений, от 05.06.2015. ........................................................... ((contextMenu) => { var menu = document.createElement("menu"); menu.setAttribute("label", "Поиск изображения в ..."); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADTUlEQVQ4ja2TX2xTZRjGv62xg4lpUoRME+e/YcYWxRS3BEEDF0SLtIvA2RpDx+lKTqTr2c7Xc77v/U47twPRYVyMGqlothEaiLCOcWGWUIgaySALZpmRsnVubGNs4IClsGwsJkBeL8QlGvXK5/r5vTfv7yHk/45lWa7W1tbDx48dH+nqOnkrkUhgPB6fampquiBE9H0AKPxH0DCMlalU6vzA4CBmMhns6+vD7u5uTCQS9/bv/xAbGt5DIUwEEAsAUP8XWNdjT/f0nMv29vZiW1v7uCwHbnq9FQ+kSh9u9b6Na8vWoWtt+X2v13stHFYn/jgEghBCSCgUWtbZ2TWVTHYOVVZWpRv37us/23PuwWcHDmLj3mbc4avGVSUutC11Yvn6TfdaPv6kZcuWrT9yDiOUiiIihGDRaMMXO6tl6/r0zI25+QX8uuMEyrv34A5fNZa9ugmXP/EsErsD7csex9m5ecyMTDRv3vzGpwAgSJ2m+c/8cN7ff3Hwt+lbWZy7u4BHjiXxRdc6XFXiWoSJ3YHPF7+Md2bn8af0IPanh9rD4fBGEtL1Dae+PfvdpV/G8eeBIbwzO48z2dtY/FIZ2pY6F2Fid2D8yzYcvjyO6aGx+6fPfN9sAHgIY6zA984uJf7VofbM6EQ2PZDByalfcXTsCm6v8uOKJ5/DNa9swAMHW3H0yiQOX74619HR2Q5gfkAplBJJKrVzrq0OBAO7K7ZXfdR2+MiJi5eGrw6PTeD0zSxOXZvGGzO3cWzy+t2T35y6oGqRo7puxHWTbwtFYk8tfoJzvtqIxTy7gkEuVfk+3+mvObqnNpJSNeN0fYSn/H45WVdXfwgAWkzeEGAac9Fg0PmnfbmWx8oHgEJOY+WmaXpNzoNCRHXBRZMQ0X0mY41cCAYA1Yyar9UrUCjL8pKHKmEOISRHVd15QRp0apr2TAQia3QdXmeMvWkYUMG5uQ0MeIsxc70VMV+wKHUqivLI343OJYTkbpTlJYqiOFiIFVBKi/SwWayregmltFRQWmQxVuD3+x8lJGn7t03lEEJy3W41T/FY+YoCjoCqrjDeNVbW1tYur6mpeUySJPvD3n8mhxBis0olu+p253kUT76iKPmSJdklSbIRQsjv4dqcl7QFgvMAAAAASUVORK5CYII="); contextMenu.insertBefore( menu, document.getElementById("context-viewimage") ); addEventListener("popupshowing", ()=> menu.hidden = !gContextMenu.onImage, false, contextMenu); addDestructor(()=> contextMenu.removeChild(menu) ); var array = [ [ 'Яндекс', 'http://yastatic.net/morda-logo/i/favicon_islands.ico', 'http://yandex.ru/images/search?rpt=imageview&img_url=' ], [ 'Tineye', 'http://tineye.com/favicon.ico', 'http://tineye.com/search?pluginver=bookmark_1.0&url=' ], [ 'Bing', 'https://www.bing.com/s/a/bing_p.ico', 'http://www.bing.com/images/searchbyimage?FORM=IRSBIQ&cbir=sbi&imgurl='], [ 'Google', 'https://www.google.lv/favicon.ico', 'http://www.google.com/searchbyimage?image_url=' ] ]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(function( m ) { var mItem = menuPopup.appendChild( document.createElement("menuitem") ); mItem.setAttribute("label", m[0]); mItem.setAttribute("image", m[1]); mItem.setAttribute("class", "menuitem-iconic"); mItem.finder = m[2]; }); menuPopup.onclick =e=> { var url = e.target.finder + encodeURIComponent(gContextMenu.imageURL); gBrowser.selectedTab = gBrowser.addTab(url); setTimeout(()=> contextMenu.hidePopup(), 20); }; })(document.getElementById("contentAreaContextMenu") ); // CB code 2 link (кликабельные custombutton ссылки).................................................................................................... addEventListener( "DOMContentLoaded", function(e) { var doc = e.target; var win = doc.defaultView; if(win != win.top) // Ignore frames return; if (doc.location.host=="forum.mozilla-russia.org"){ var boxes = []; var pres = doc.getElementsByTagName("pre"); for(var i = 0, l = pres.length; i < l; ++i) { var pre = pres[i]; if(pre.parentNode.parentNode.parentNode.className == "codebox") boxes.push(pre); } for(var i = 0, l = boxes.length; i < l; ++i) { var box = boxes[i]; if(box.hasAttribute("data-highlight-js-parsed")) continue; box.setAttribute("data-highlight-js-parsed", "true"); // Special "codes" var tc = box.textContent; if( /^custombutton:\/\/\S+%3C\/custombutton%3E\s*$/.test(tc) || /^data:[\w-]+\/[\w-]+;base64,\S+\s*$/.test(tc) ) { tc = tc.replace(/\s+$/, ""); var a = doc.createElement("a"); a.href = tc; var icon; if(/^data:image\//.test(tc)) icon = tc; else if( /^custombutton:\/\//.test(tc) && /%3Cimage%3E%3C%21%5BCDATA%5B(data%3A\S+)%5D%5D%3E%3C\/image%3E/.test(tc) ) try { icon = decodeURIComponent(RegExp.$1); } catch(e) {} if(icon) { var img = doc.createElement("img"); img.src = icon; img.alt = ""; var s = img.style; s.marginRight = "4px"; s.verticalAlign = "middle"; a.appendChild(img); } a.appendChild(doc.createTextNode(tc)); var s = a.style; s.background = "none"; s.margin = s.padding = 0; box.innerHTML = ""; box.appendChild(a); continue; } } } }, true, document.getElementById("appcontent") ); // Добавлять новые СВ кнопки справа от этой кнопки ...................................................................................................... this._handleClick =()=> cbu.setPrefs(s, !cbu.getPrefs(s)); var observer = { observe: button=> { if ( !cbu.getPrefs(s) ) return; var toolbar = self.parentNode; toolbar.insertBefore(button, self.nextSibling); custombuttons.persistCurrentSets(toolbar.id, _id, button.id); if ( parseInt(Services.appinfo.version) < 43 ) return; function observer(subject, topic, data) { setTimeout(()=> Services.ww.unregisterNotification(observer), 500); subject.close(); }; Services.ww.registerNotification(observer); } }; var notificationPrefix = custombuttons.notificationPrefix + "installButton"; Services.obs.addObserver(observer, notificationPrefix, false); addDestructor(()=> Services.obs.removeObserver(observer, notificationPrefix) ); var s = "CB.newButtonAtRightFromCurrent"; function toggleImage() self.style.filter = cbu.getPrefs(s) ? '' : 'grayscale(1)'; toggleImage(); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );
Отсутствует
Есть несколько отвалившихся кнопок.
Может кто поправит
// Кнопка для управления масштабом страницы в адресной строке, от 27.11.2017. .......................... (()=> { // Удалить из адресной строки FF51 стандартную кнопку масштаба .... var but = document.getElementById('urlbar-zoom-button'); if (but) but.style.display = "none"; // Создать в адресной строке кнопку масштаба ....userContext-icons page-action-buttons var zoomButton = document.createElement("statusbarpanel"); var urlbarIcons = document.getElementById("urlbar-icons") || document.getElementById("page-action-buttons"); // FF57 urlbarIcons.insertBefore(zoomButton, urlbarIcons.lastChild); // перед последней кнопкой адресной строки addDestructor(()=> zoomButton.remove()); updateZoomButton(); zoomButton.id = "zoomButton"; zoomButton.setAttribute("context", "event.stopPropagation()"); zoomButton.style.cssText = "-moz-appearance: none; border: 0; margin-right: -1px;"; // Css стиль для кнопки масштаба zoomButton.tooltipText = "Л: Менять масштаб страницы или только текста\nС: Единый масштаб для всех страниц \nП: Сбросить масштаб на 100% "; // Отслеживать клики на кнопке масштаба .... addEventListener("click", e=> { if ( e.button == 0 ) ZoomManager.toggleZoom(); // переключить режим изминения масштаба if ( e.button == 1 ) { // единый масштаб для всех страниц cbu.isPref("CB.zoom.allEvenly", false); cbu.setPrefs("CB.zoom.allEvenly", !cbu.getPrefs("CB.zoom.allEvenly") ); cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ); updateZoomButton(); } if ( e.button == 2 ) FullZoom.reset(); // сбросить масштаб }, false, zoomButton); // Менять масштаб колесиком мыши на кнопке масштаба .... addEventListener("DOMMouseScroll", e=> { e.detail > 0 ? FullZoom.reduce() : FullZoom.enlarge(); }, false, zoomButton); // Следим за изменением масштаба и запускаем обновление кнопки .... var str = "{ setTimeout(()=> { updateZoomButton() }, 50);"; var handleEvent = parseInt(Services.appinfo.version) > 33 ? FullZoom.handleEvent : FullZoom._handleMouseScrolled; var array = [FullZoom.reset, FullZoom.reduce, FullZoom.enlarge, ZoomManager.toggleZoom, handleEvent]; array.forEach(func=> { setTimeout(()=> { eval( (func.toString().replace('_', '.').match(/function ([^(]*)\(/)[1] + " = " + func.toString().replace("{", str)) )}, 50) }); addDestructor(()=> { array.forEach(func=> { eval( (func.toString().replace('_', '.').match(/function ([^(]*)\(/)[1] + " = " + func.toString()).replace(str,"{") ) }); }); // Показывать текущий масштаб страницы на кнопке и изменять цвет и шрифт отображения масштаба .... function updateZoomButton(e) { zoomButton.label = Math.round(ZoomManager.zoom*100) + "%"; setTimeout(()=> { zoomButton.style.fontWeight = ZoomManager.useFullZoom ? '' : 'bold'; zoomButton.style.color = cbu.getPrefs("CB.zoom.allEvenly") ? "red" : ""; }, 5); // запомнить текущий масштаб в 'about:config' if ( e == undefined ) { try { window.clearTimeout(zoomButton.prefTimeout) } catch(e) {}; zoomButton.prefTimeout = window.setTimeout(()=> { cbu.setPrefs("CB.zoom.Percent", ZoomManager.zoom.toFixed(2) ) }, 250); } }; // Устанавливать единый масштаб для всех страниц если это разрешено в 'about:config' .... addEventListener("TabAttrModified", e=> { if ( e.target.linkedBrowser.currentURI.spec !== gBrowser.currentURI.spec ) return; if ( cbu.getPrefs("CB.zoom.allEvenly") && content.location.protocol.startsWith("http") ) { var value = cbu.getPrefs("CB.zoom.Percent"); if ( ZoomManager.zoom.toFixed(2) == value ) return; setTimeout(()=> { gBrowser.markupDocumentViewer[ZoomManager.useFullZoom ? 'fullZoom' : 'textZoom'] = value; updateZoomButton(e); }, 0); } else updateZoomButton(e); }, true, gBrowser.tabContainer); })(); // Добавить подменю "Поиск изображения в ..." в контекстном меню изображений, от 05.06.2015. ........................................................... ((contextMenu) => { var menu = document.createElement("menu"); menu.setAttribute("label", "Поиск изображения в ..."); menu.setAttribute("class", "menu-iconic"); menu.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADTUlEQVQ4ja2TX2xTZRjGv62xg4lpUoRME+e/YcYWxRS3BEEDF0SLtIvA2RpDx+lKTqTr2c7Xc77v/U47twPRYVyMGqlothEaiLCOcWGWUIgaySALZpmRsnVubGNs4IClsGwsJkBeL8QlGvXK5/r5vTfv7yHk/45lWa7W1tbDx48dH+nqOnkrkUhgPB6fampquiBE9H0AKPxH0DCMlalU6vzA4CBmMhns6+vD7u5uTCQS9/bv/xAbGt5DIUwEEAsAUP8XWNdjT/f0nMv29vZiW1v7uCwHbnq9FQ+kSh9u9b6Na8vWoWtt+X2v13stHFYn/jgEghBCSCgUWtbZ2TWVTHYOVVZWpRv37us/23PuwWcHDmLj3mbc4avGVSUutC11Yvn6TfdaPv6kZcuWrT9yDiOUiiIihGDRaMMXO6tl6/r0zI25+QX8uuMEyrv34A5fNZa9ugmXP/EsErsD7csex9m5ecyMTDRv3vzGpwAgSJ2m+c/8cN7ff3Hwt+lbWZy7u4BHjiXxRdc6XFXiWoSJ3YHPF7+Md2bn8af0IPanh9rD4fBGEtL1Dae+PfvdpV/G8eeBIbwzO48z2dtY/FIZ2pY6F2Fid2D8yzYcvjyO6aGx+6fPfN9sAHgIY6zA984uJf7VofbM6EQ2PZDByalfcXTsCm6v8uOKJ5/DNa9swAMHW3H0yiQOX74619HR2Q5gfkAplBJJKrVzrq0OBAO7K7ZXfdR2+MiJi5eGrw6PTeD0zSxOXZvGGzO3cWzy+t2T35y6oGqRo7puxHWTbwtFYk8tfoJzvtqIxTy7gkEuVfk+3+mvObqnNpJSNeN0fYSn/H45WVdXfwgAWkzeEGAac9Fg0PmnfbmWx8oHgEJOY+WmaXpNzoNCRHXBRZMQ0X0mY41cCAYA1Yyar9UrUCjL8pKHKmEOISRHVd15QRp0apr2TAQia3QdXmeMvWkYUMG5uQ0MeIsxc70VMV+wKHUqivLI343OJYTkbpTlJYqiOFiIFVBKi/SwWayregmltFRQWmQxVuD3+x8lJGn7t03lEEJy3W41T/FY+YoCjoCqrjDeNVbW1tYur6mpeUySJPvD3n8mhxBis0olu+p253kUT76iKPmSJdklSbIRQsjv4dqcl7QFgvMAAAAASUVORK5CYII="); contextMenu.insertBefore( menu, document.getElementById("context-viewimage") ); addEventListener("popupshowing", ()=> menu.hidden = !gContextMenu.onImage, false, contextMenu); addDestructor(()=> contextMenu.removeChild(menu) ); var array = [ [ 'Яндекс', 'http://yastatic.net/morda-logo/i/favicon_islands.ico', 'http://yandex.ru/images/search?rpt=imageview&img_url=' ], [ 'Tineye', 'http://tineye.com/favicon.ico', 'http://tineye.com/search?pluginver=bookmark_1.0&url=' ], [ 'Bing', 'https://www.bing.com/s/a/bing_p.ico', 'http://www.bing.com/images/searchbyimage?FORM=IRSBIQ&cbir=sbi&imgurl='], [ 'Google', 'https://www.google.lv/favicon.ico', 'http://www.google.com/searchbyimage?image_url=' ] ]; var menuPopup = menu.appendChild( document.createElement("menupopup") ); array.forEach(function( m ) { var mItem = menuPopup.appendChild( document.createElement("menuitem") ); mItem.setAttribute("label", m[0]); mItem.setAttribute("image", m[1]); mItem.setAttribute("class", "menuitem-iconic"); mItem.finder = m[2]; }); menuPopup.onclick =e=> { var url = e.target.finder + encodeURIComponent(gContextMenu.imageURL); gBrowser.selectedTab = gBrowser.addTab(url); setTimeout(()=> contextMenu.hidePopup(), 20); }; })(document.getElementById("contentAreaContextMenu") ); // CB code 2 link (кликабельные custombutton ссылки).................................................................................................... addEventListener( "DOMContentLoaded", function(e) { var doc = e.target; var win = doc.defaultView; if(win != win.top) // Ignore frames return; if (doc.location.host=="forum.mozilla-russia.org"){ var boxes = []; var pres = doc.getElementsByTagName("pre"); for(var i = 0, l = pres.length; i < l; ++i) { var pre = pres[i]; if(pre.parentNode.parentNode.parentNode.className == "codebox") boxes.push(pre); } for(var i = 0, l = boxes.length; i < l; ++i) { var box = boxes[i]; if(box.hasAttribute("data-highlight-js-parsed")) continue; box.setAttribute("data-highlight-js-parsed", "true"); // Special "codes" var tc = box.textContent; if( /^custombutton:\/\/\S+%3C\/custombutton%3E\s*$/.test(tc) || /^data:[\w-]+\/[\w-]+;base64,\S+\s*$/.test(tc) ) { tc = tc.replace(/\s+$/, ""); var a = doc.createElement("a"); a.href = tc; var icon; if(/^data:image\//.test(tc)) icon = tc; else if( /^custombutton:\/\//.test(tc) && /%3Cimage%3E%3C%21%5BCDATA%5B(data%3A\S+)%5D%5D%3E%3C\/image%3E/.test(tc) ) try { icon = decodeURIComponent(RegExp.$1); } catch(e) {} if(icon) { var img = doc.createElement("img"); img.src = icon; img.alt = ""; var s = img.style; s.marginRight = "4px"; s.verticalAlign = "middle"; a.appendChild(img); } a.appendChild(doc.createTextNode(tc)); var s = a.style; s.background = "none"; s.margin = s.padding = 0; box.innerHTML = ""; box.appendChild(a); continue; } } } }, true, document.getElementById("appcontent") ); // Добавлять новые СВ кнопки справа от этой кнопки ...................................................................................................... this._handleClick =()=> cbu.setPrefs(s, !cbu.getPrefs(s)); var observer = { observe: button=> { if ( !cbu.getPrefs(s) ) return; var toolbar = self.parentNode; toolbar.insertBefore(button, self.nextSibling); custombuttons.persistCurrentSets(toolbar.id, _id, button.id); if ( parseInt(Services.appinfo.version) < 43 ) return; function observer(subject, topic, data) { setTimeout(()=> Services.ww.unregisterNotification(observer), 500); subject.close(); }; Services.ww.registerNotification(observer); } }; var notificationPrefix = custombuttons.notificationPrefix + "installButton"; Services.obs.addObserver(observer, notificationPrefix, false); addDestructor(()=> Services.obs.removeObserver(observer, notificationPrefix) ); var s = "CB.newButtonAtRightFromCurrent"; function toggleImage() self.style.filter = cbu.getPrefs(s) ? '' : 'grayscale(1)'; toggleImage(); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );
Отсутствует
здрасти. в связи с возвратом на ФФ и почти полного допиливания этого субъекта появилось парочку вопросов. Уважаемые мастера, никак не могу заставить функционировать Save( Firefox 24 + ) от 07.03.2017. Конкретно - не могу сохранять ярлыки страниц, в смысле значки сайтов. при этом иконки и выделенный текст прекрасно сохраняются. это у меня руки кривые опять или же можно что-то подправить в коде? спс заранее
Отредактировано sonyas75 (28-11-2017 01:31:34)
Отсутствует
"Переключаться на левую вкладку после закрытии текущей вкладки" посмотрите ато мозиловцы совсем все поломали.
скрытый текстВыделить кодКод:
// Переключаться на левую вкладку после закрытии текущей вкладки, от 22.08.2013. ................................ function tabCloseHandler(e) { var tab = e.target; if ( tab == gBrowser.mCurrentTab ) { if ( !gBrowser.visibleTabs.length ) gBrowser.addTab("about:blank"); else if ( !tab.hasAttribute('first-visible-tab') ) { gBrowser.mTabContainer.advanceSelectedTab(-1,true) }; } } addEventListener("TabClose", tabCloseHandler, true, gBrowser.tabContainer );
Ну, можно попробовать приглядеться
как себя поведёт такой, например, код
((tabs, flag) => { if (!tabs) return; addEventListener("TabSelect", () => flag = new Error().stack.includes( "\n_blurTab@chrome://browser/content/tabbrowser.xml:" ), false, tabs); addEventListener("TabClose", ({target: tab}) => { if (flag) while((tab = tab.previousSibling)) { if (tab.hidden || tab.closing) continue; if (!tab.selected) gBrowser.selectedTab = tab; break; } }, false, tabs); })(gBrowser.tabContainer);
Отсутствует
Поигрался с главным меню в Firefox 57. Добавил новое меню "Папки" в главное меню
// Добавить новый пункт "Папки" в главном меню от 28.11.2017. ...................... (function() { var info1="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAPAAAAFgAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABkAAAAZAAAAGQAAABYAAAAQAAAACgAAAAUAAAAOAAAAdAAAAH0AAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAAB9AAAAeAAAABAAAAAGKa3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/Ka3W/wAAAH0AAAAWAAAABymt1v947f7/g+7+/47w/v+V8f7/mvH+/5zy/v+a8f7/lfH+/47w/v+D7v7/eO3+/ymt1v8AAACCAAAAGQAAAAcprdb/cez+/3zu/v+G7/7/jvD+/5Lw/v+U8f7/kvD+/47w/v+G7/7/fO7+/3Hs/v8prdb/AAAAggAAABkAAAAHKa3W/2jr/v9y7P7/e+3+/4Hu/v+G7/7/h+/+/4bv/v+B7v7/e+3+/3Ls/v9o6/7/Ka3W/wAAAIIAAAAZAAAABymt1v9b6f7/ZOr+/2vr/v9x7P7/de3+/3bt/v917f7/cez+/2vr/v9k6v7/W+n+/ymt1v8AAACCAAAAGQAAAAcprdb/S+f+/1Lo/v9Z6f7/Xer+/2Dq/v9h6v7/YOr+/13q/v9Z6f7/Uuj+/0vn/v8prdb/AAAAggAAABkAAAAGKa3W/2Dp/f9l6v3/aer9/23r/v9u6/3/b+z+/27r/f9t6/7/aer9/2Xq/f9g6f3/Ka3W/wAAAH0AAAAWAAAABSmt1v9/7f3/ge7+/4Pu/f+F7v3/he7+/4bu/f+F7v7/he79/4Pu/f+B7v7/f+39/ymt1v8AAAB0AAAADwAAAAMprdb/pPL9/6Xy/v+m8v3/p/P+/6fz/v8prdb/Ka3W/ymt1v8prdb/Ka3W/ymt1v8prdb/AAAADgAAAAkAAAABAAAABCmt1v/Q+P7/0Pj+/9D4/v8prdb/AAAAFQAAAA0AAAAIAAAABgAAAAYAAAAGAAAABQAAAAQAAAADAAAAAAAAAAEAAAAEKa3W/ymt1v8prdb/AAAADwAAAAkAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAQAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AADAfwAA//8AAA=="; var info2="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjVJivzgAAACwElEQVQ4T7VUX0hTcRRWCV+0i5lRiRhqRbCEULSZ/5qa021ddd1td3Nuu9P5Z+ZmuimSGRVWD4H1EpFPIT1IEPQYBtWLEaXMHqSyh9CiOVqmoj2eft9tDnMJ9dCFH+d+3/nOdw/n/La4uP/9fPiydJid/E0n56+/yYp2RwwSYJCUnDKTtCeTOC51KmIIHh9I3dYUQre316QsLr0QeD9fAJylyCOVzkiIwOCR9/oHDMAxZugEJty+A+vph3IpLT37SWBuoUBZUUuCvZ0QgcEjz+3NXPcNDOlZXcpvZozIqak3Dh49XkbVDRYqrNBQoap2tuaMlcwtXYQIDB55RWEpaepNA6wuK6arz+HVKqHRMaERGknf5CKt0U4awRI9wOCRN1gdjz+FVyu3dhPdTnBprc7sbJ8VbG102mhdHBt/OBxe/dGKCCzYWsnS0vEGupht/tpO6sz+gwo6VlJJvEUiXrTT3Xv3Ly18XSli+XhEYPA6UZJ10HNcmrxNuTO85OTmk84skYnNw9HlJ53RSs9eBtQslxjRJAKDRx466LNZXaSzeNmoXK2dPsUL1NDoJLu7hxqamkmU2rojop2IwODlPNNBX16tmd7cUUZoed2IWcwvht0uj29O6vJRBW8I1+jFvmu37mgRgR1nfeTy+N8Fv620Q486ZpQRHToDOyYDb5X5xaqnpmY3dfYPkeTxk97mIrXBKkdg8CZnB+UVn5TvGatL2Lq5I0Uq9ZUSNU9Obx85Os9Rz+DlqQ7/IPUP3yBEYPCS108nqjRUqdX34/5tNeJGx8btZWrtUp1oI1dn90Roec1gd3vp/PURNhcvAYNHHrqxB49EZpQccyE/hpaVz1+87r55e3Rk457wZhv1XrxKiBgqeOQnXwU80G/7w2XCXewoNq4FL4jTdWITIW5sB/ng9zXuX/5SotuM2c4fXH4C3BQJxGxDNfsAAAAASUVORK5CYII="; var info3="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA25JREFUeNosU1toHFUY/s6ZM7szuzs72e4t1zVGrZEoRBOQUo1W0QpSKIKXBymKmPrgQ9EKaV4EH4w+CH2Qgn0Q8fbSSrFQ8RJtaQm1thVrSwJtitnGbDbJZm+zO/eZ48zggZ/znfNfz3++n3DOceu1/EkAc/d9sXV18uDxycGVP9/sS3WmLuemCsE9XMddcW2nDI5TUkr+Kry78tl0uIH8H4CHhyN3nv9QU4uvfKp+PnLthgbt5HZkVK21ceG3RSzfXMPkP9//fED54QPHNBdCHf1IEl4NQWbEx1zpzGzoHGLb9rDVdVHrOLDAkOwrIG63MHtAe9aW0vPqUPalKEBCEZ6kqhBlyj+sInUvi7Bp+ci9sAPfjWehcwKiSAAT4Q7fhfGXxyTdpMfzY4VemkyTCTFFfaZm4No+PJ3Cs4DHd+2I5BEV2NBcOIIIW5Dw43UVudEiMgOyamnOEZrKkP644tMordEGNzlss4jcc2/gwsU61r/dRKvtYbtiwA8qWFy20Wq5GJjIwtWMPSye9NOgXuRvWwTCWCnCTFyEGAe2VuvgnSY6lQo8X8DVJQo5sKcZCZbujTImO3H4gOA38Nd5HbVvrsCNR5+Cw4PvQz53HowJIKYG2xMw3KOjJ11H0zDg2S6jgarTWHPgBNkffExGXvGhKMA7hRlQScbRzhzmkl/D6nThGl08MXgHaNRhlzfAYkRn1MKv1WV7f2GAIaVS5EoxFAnB2cQxJCUXbV/G3/Nn4d39NMR2GQfHl2BVbWxfqwcM868zFzhhNqy96zeZ3LczhtKEgtYax2a1i3LZQ72pYyY7g9ftE9i3T0dWsNC81UT5Ng0qLP5CTu9FAjpZSLD4+OijEmKSAMsIxBRx+VIL6FWQIF2UCg6Gh+MwAlKt39YCksntnmz+/pA1uhnjb7UN6zT+4IXSAxIU1UfQXOx+Kg5GTDgmgRsE1DY86NRBXXPNpZr29j31ZjWi3Yvz/NKhh8j0Tss+Ztxw+9UYQyYdtJcScJGAMgLPc1AzOBoG9DMr/qH9JR4NVfiEaDWsIcmudvbobutoKo3BbJonaIyDhEpOYYPamxVsi7TnPTErn8rEV/UowEgiMsHC/E/o3fUM3h1i/UGfdkscUyLQF85LwOx/LUp+92P83CerbmX5y48xfXgWawFr/xNgANPvgmYH0Mg8AAAAAElFTkSuQmCC"; var info4="chrome://global/skin/dirListing/folder.png"; var info5="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABaUlEQVQ4y6WTW0sCQRiG/SEpVBDUVVfphbAEhWAlqYhrLWUlER2IIgrqYkEp6SBmudWiFf0SiSCwpAI7bJnprq6H/sTbGhJiEyt28fAN7zfz8DHDaABo/oPqBpovX7j4T1gOS6dNCcYiZbhOSrCHi2hugqNCwskVYNmXbxoSuPkCN3NWhCdahLLGKCfDcSBjOJiHeTeHPr8EyifCwGb9RMF0RIaHl+E+zoMJ5+AM5WALSBjaEWHayqLXm4GR/YB+Iw2iYIKTMB6WwIRE0EER9r0s+r1pGNZT6F55ReeigPb5F7TOPpMFTDCDkUAGA753GFYFdC08QedJEvkR2DbfzuntFBz+1K2ZFdCz9Ii2qQfo3Pck2MoZpVI/AqtXQAXjchIdk3fQMok/Ib6CaS0Z1c8pdlc8pqXjUOF7AqVSxDvQOq7RKERBi/UKdbDVnK3vkQWWS9Si1vstGIyxCqiBquZUXc429BfU+AL9Tqy8Q2Za8AAAAABJRU5ErkJggg=="; //Добавить подменю "Папки" var menuItem = document.createElement("panelview"); menuItem.setAttribute("id", "appMenu-Folders"); menuItem.setAttribute("title", "Папки"); menuItem.setAttribute("class", "PanelUI-subView"); var it = document.getElementById("PanelUI-bookmarkingTools"); it.parentNode.insertBefore(menuItem, it); //Добавить новый пункт "Папки" в главном меню var menuItem1 = document.createElement("toolbarbutton"); menuItem1.setAttribute("id", "Folders-menu"); menuItem1.setAttribute("label", "Папки"); menuItem1.setAttribute("closemenu", "none"); menuItem1.setAttribute("class", "subviewbutton subviewbutton-nav"); menuItem1.setAttribute("image", info1 ); menuItem1.setAttribute("oncommand", "PanelUI.showSubView('appMenu-Folders', this)"); var it = document.getElementById("appMenu-more-button"); it.parentNode.insertBefore(menuItem1, it); //Добавить пункты подменю "Папки" var menuItem2 = document.createElement("toolbarbutton"); menuItem2.setAttribute("id", "Folders2"); menuItem2.setAttribute("label", "Текущий профиль"); menuItem2.setAttribute("class", "subviewbutton"); menuItem2.setAttribute("image", info2); menuItem2.addEventListener("command", Folders2, false); menuItem.insertBefore(menuItem2, null); var menuItem3 = document.createElement("toolbarbutton"); menuItem3.setAttribute("id", "Folders3"); menuItem3.setAttribute("label", "Папка Firefox"); menuItem3.setAttribute("class", "subviewbutton"); menuItem3.setAttribute("image", info3); menuItem3.addEventListener("command", Folders3, false); menuItem.insertBefore(menuItem3, null); var menuItem4 = document.createElement("toolbarbutton"); menuItem4.setAttribute("id", "Folders4"); menuItem4.setAttribute("label", "Папка Chrome"); menuItem4.setAttribute("class", "subviewbutton"); menuItem4.setAttribute("image", info4); menuItem4.addEventListener("command", Folders4, false); menuItem.insertBefore(menuItem4, null); var menuItem5 = document.createElement("toolbarbutton"); menuItem5.setAttribute("id", "Folders5"); menuItem5.setAttribute("label", "Папка Extensions"); menuItem5.setAttribute("class", "subviewbutton"); menuItem5.setAttribute("image", info5); menuItem5.addEventListener("command", Folders5, false); menuItem.insertBefore(menuItem5, null); //----------Текущий профиль------------ function Folders2(){ var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.launch(); } //----------Папка Firefox------------ function Folders3(){ var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("GreD", Components.interfaces.nsIFile); file.launch(); } //----------Папка Chrome------------ function Folders4(){ var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("chrome"); file.launch(); } //-----------Папка Extensions------------- function Folders5(){ var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); file.append("extensions"); file.launch(); } })();
Отсутствует
About: (Firefox24+) от 13.01.2015
При нажатии ПКМ по этой кнопке происходит наложение контекстного меню расширения Custom Buttons и самой кнопки (на скриншоте видно). bunda1, посмотрите, пожалуйста - может, чего можно подправить. Версия Сustom Buttons 0.0.5.8.9-fixed5-signed
Отредактировано Viatcheslav (29-11-2017 14:40:50)
Отсутствует
При нажатии ПКМ по этой кнопке происходит наложение контекстного меню расширения Custom Buttons и самой кнопки (на скриншоте видно). bunda1, посмотрите, пожалуйста - может, чего можно подправить. Версия Сustom Buttons 0.0.5.8.9-fixed5-signed
Отсутствует
На FF57 перестали работать:
Экспорт/импорт закладок в HTML-файл
Кодировать изображение или текстовой файл в base64
Save snapshot to html
Если возможно, то поправьте пожалуйста.
«The Truth Is Out There»
Отсутствует