да, перекидывает!
Ну, пробуйте новый профиль, переустановку браузера,
проверяйте систему на вирусы и т. д.
добавил, а толку - то !
user.js нужно добавить в корневую папку профиля а не в chrome
именно user.js а не userPref.js
Отсутствует
Ovod
да скопируйте из старого places.sqlite и favicons.sqlite (необязательно)
если ещё нужны пароли то key4.db и logins.json
Отсутствует
Vitaliy V.
и последнее
как в том же коде
/* Подсветка посещенных и непосещенных ссылок */ a:link {color: #FFFFFF !important;} /* Белый цвет непосещенной ссылки */ a:visited {color: ##00ff00 !important;} /* Темно-зеленый цвет посещенной ссылки */ /* Подчеркивать ссылки при наведении на них */ a[href]:hover { text-decoration: underline !important; }
уточнить, что фон именно что черный, текст белый?
за userjs спасибо - ширина полос меню, пункты меню и цвет ссылок стал как надо
Отсутствует
уточнить, что фон именно что черный
в смысле уточнить?
разве что добавить background к ссылкам
background-color: black !important;
Отсутствует
Отсутствует
Vitaliy V.
в смысле уточнить?
в том смысле уточнить, что встречаются страницы,где цветовая схема дикаяЁ
Добавлено 23-03-2020 16:27:31
у меня черный фон и белый текст в настройках браузера а тут вона что!
(в обычных настроках - не сss)
По поводу бакграунда
background-color: black !important;
- не надо двоеточия буквы а разве?
Как указать белый текст кодом?
Добавлено 23-03-2020 16:42:46
a:link {color: #FFFFFF !important;} /* Белый цвет непосещенной ссылки */ a:visited {color: ##00ff00 !important;} /* Темно-зеленый цвет посещенной ссылки */ background-color: #000000 !important; color: #FFFFFF !important;
right all 7
Добавлено 23-03-2020 16:43:32
?
Отредактировано Ovod (23-03-2020 16:43:32)
Отсутствует
Ovod
я имел ввиду добавить к вашему коду
Отсутствует
Вопрос снят ! Нашел dialog.css , туда коды button.dialog-button и все дела...
можно поподробней: где найти dialog.css и где взять коды button.dialog-button, а то в твоей 73 это окно тоже достало уже ...
Win 10х64
Отсутствует
ALEX_45_ORP
omni.ja/chrome/toolkit/skin/classic/global/dialog.css
/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* ===== dialog.css ===================================================== == Styles used by the XUL dialog element. ======================================================================= */ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* ::::: dialog ::::: */ dialog { padding-top: 8px; padding-bottom: 10px; padding-inline-start: 8px; padding-inline-end: 10px; } /* ::::: dialog buttons ::::: */ .dialog-button { font: menu; margin-top: 6px; } button.dialog-button:hover { -moz-appearance: none !important; border-radius: 3px !important; background: linear-gradient(rgb(72, 85, 108),rgb(20, 25, 34)) !important; cursor: pointer !important; color: #00ffff !important; padding: 2px !important} button.dialog-button{ -moz-appearance: none !important; border-radius: 3px !important; cursor: pointer !important; padding: 2px !important; background: linear-gradient(#aaa,#444) !important; color: #fff !important} dialog button, toolbar[printpreview="true"] button { -moz-appearance: none !important; border-radius: 3px !important; background: linear-gradient(#aaa,#444) !important; cursor: pointer !important; color: #fff !important; padding: 2px !important} dialog button:hover, toolbar[printpreview="true"] button:hover { background: linear-gradient(rgb(72, 85, 108),rgb(20, 25, 34)) !important; color: #00ffff !important} button[dlgtype="accept"] > .button-box > .button-icon, button[dlgtype="finish"] > .button-box > .button-icon, button[id="save-chrome"] > .button-box > .button-icon, button[id="save-content"] > .button-box > .button-icon, button[id="save-js"] > .button-box > .button-icon, button[oncommand="doOKButton();"] > .button-box > .button-icon, dialog[id="exceptiondialog"] button[dlgtype="extra1"] > .button-box > .button-icon, button[oncommand="enigmailKeygenStart();"] > .button-box > .button-icon, button[id="editBookmarkPanelDoneButton"] > .button-box > .button-icon, button[id="restart-button"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/ok.png") !important; margin-right: 5px !important; margin-left: -2px !important; } button[dlgtype="accept"][disabled="true"] > .button-box > .button-icon, button[dlgtype="finish"][disabled="true"] > .button-box > .button-icon, button[id="save-chrome"][disabled="true"] > .button-box > .button-icon, button[id="save-content"][disabled="true"] > .button-box > .button-icon, button[id="save-js"][disabled="true"] > .button-box > .button-icon, button[oncommand="doOKButton();"][disabled="true"] > .button-box > .button-icon, dialog[id="exceptiondialog"] button[dlgtype="extra1"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/ok-dis.png") !important; margin-right: 4px !important; margin-left: -3px !important; } button[dlgtype="cancel"] > .button-box > .button-icon, button[oncommand="doCancelButton();"] > .button-box > .button-icon, button[id="clearFilter"] > .button-box > .button-icon, button[id="clearListButton"] > .button-box > .button-icon, /* Download Manager - downloads.css */ button[id="editBookmarkPanelDeleteButton"] > .button-box > .button-icon, button[id="cancel-button"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/clear-small.png") !important; -moz-image-region: rect(0px 16px 16px 0px) !important; margin-right: 4px !important; margin-left: -4px !important; } button[dlgtype="cancel"][disabled="true"] > .button-box > .button-icon, button[oncommand="doCancelButton();"][disabled="true"] > .button-box > .button-icon, button[id="clearFilter"][disabled="true"] > .button-box > .button-icon, button[id="clearListButton"][disabled="true"] > .button-box > .button-icon { /* Download Manager - downloads.css */ list-style-image: url("chrome://global/skin/icons/clear-small.png") !important; -moz-image-region: rect(48px 16px 64px 0px) !important; margin-right: 4px !important; margin-left: -4px !important; } button[id="button-close"] > .button-box > .button-icon, button[id="closeButton"] > .button-box > .button-icon, button[id="donebutton"] > .button-box > .button-icon, button[id="Close"][class="spell-check"] > .button-box > .button-icon, button[id="editBookmarkPanelRemoveButton"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/clear-small.png") !important; -moz-image-region: rect(0px 16px 16px 0px) !important; margin-right: 4px !important; margin-left: -4px !important; } button[id="button-close"][disabled="true"] > .button-box > .button-icon, button[id="closeButton"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/close.png") !important; -moz-image-region: rect(48px 16px 64px 0px) !important; margin-right: 2px !important; } button[dlgtype="help"] > .button-box > .button-icon, button[id="HelpButton"] > .button-box > .button-icon, button[oncommand="doHelpButton();"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/question-16.png") !important; margin-right: 2px !important; } button[id="editMessageButton"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/edit.png") !important; margin-right: 2px !important; } button[id$=".advancedbutton"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/advanced-prefs.png") !important; margin-right: 2px !important; } button[id="more-panels-link"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/search.png") !important; margin-right: 2px !important; } /* "Don't Save" and "Quit" (there are no unique identifiers except the label ) */ dialog[id="commonDialog"] button[dlgtype="extra1"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/close.png") !important; -moz-image-region: rect(0px 16px 16px 0px) !important; margin-right: 2px !important; } /* For the Software Update wizard - this cannot be grouped above */ wizard[id="updates"] .wizard-button[dlgtype="extra1"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/close.png") !important; -moz-image-region: rect(0px 16px 16px 0px) !important; margin-right: 2px !important; } wizard[id="updates"] .wizard-button[dlgtype="extra2"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/stop.png") !important; margin-right: 2px !important; } /* View Cookie Manager button on Privacy dialog */ dialog[id="p3pDialog"] button[dlgtype="extra1"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/cookie.png") !important; margin-right: 2px !important; } button[dlgtype="extra2"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/information-16.png") !important; margin-right: 2px !important; } button[dlgtype="extra2"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/information-16-dis.png") !important; margin-right: 2px !important; } button[id="launch"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/launch.png") !important; margin-right: 2px !important; } button[id="launch"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/launch-dis.png") !important; margin-right: 2px !important; } button[id="pauseResume"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/pause.png") !important; margin-right: 2px !important; } button[id="pauseResume"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/pause-dis.png") !important; margin-right: 2px !important; } button[label="Resume"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/go.png") !important; margin-right: 2px !important; } button[id="download-button"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/download.png") !important; margin-right: 2px !important; } wizard[currentpageid="updatesfound"] .wizard-button[dlgtype="next"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/install.png") !important; margin-right: 2px !important; } button[id="backButton"] > .button-box > .button-icon, button[dlgtype="back"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/back.png") !important; margin-right: 2px !important; } button[dlgtype="back"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/back-dis.png") !important; margin-right: 2px !important; } button[dlgtype="next"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/next.png") !important; margin-right: 2px !important; } button[dlgtype="next"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/next-dis.png") !important; margin-right: 2px !important; } /* Override for Console2 extension */ dialog[id="Console2BlacklistDialog"] button[dlgtype="extra2"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/clear-small.png") !important; -moz-image-region: rect(0px 16px 16px 0px) !important; margin-right: 4px !important; margin-left: -3px !important; } dialog[id="Console2BlacklistDialog"] button[dlgtype="extra2"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/clear-small.png") !important; -moz-image-region: rect(48px 16px 64px 0px) !important; margin-right: 5px !important; margin-left: -3px !important; } /* Override to make sure "OK" and "Apply" are always the ok image (English only) */ button[label="OK"] > .button-box > .button-icon, button[label="Apply"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/ok.png") !important; margin-right: 4px !important; margin-left: -4px !important; } button[label="OK"][disabled="true"] > .button-box > .button-icon, button[label="Apply"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/subskin/icons/ok-dis.png") !important; margin-right: 4px !important; margin-left: -3px !important; } /* Override to make sure "Cancel" is always the cancel image (English only) */ button[label="Cancel"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/clear-small.png") !important; -moz-image-region: rect(0px 16px 16px 0px) !important; margin-right: 4px !important; margin-left: -3px !important; } button[label="Cancel"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/clear-small.png") !important; -moz-image-region: rect(48px 16px 64px 0px) !important; margin-right: 4px !important; margin-left: -3px !important; } /* Override to make sure "Close" is always the close image (English only) */ button[label="Close"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/close.png") !important; -moz-image-region: rect(0px 16px 16px 0px) !important; margin-right: 2px !important; } button[label="Close"][disabled="true"] > .button-box > .button-icon { list-style-image: url("chrome://global/skin/icons/close.png") !important; -moz-image-region: rect(48px 16px 64px 0px) !important; margin-right: 2px !important; } .small-button .button-icon, /* Override for searchDialog and filterDialog */ #notification-popup button.popup-notification-menubutton .button-icon { /* Don't display button images inside the notification popup */ display: none !important; }
Отредактировано solombala (23-03-2020 17:54:05)
Отсутствует
Иконки - сам мастырь, если надо...
не понял для чего иконки?
просто заменил в dialog.css код на твой, надеюсь это окно теперь не будет выскакивать?
Win 10х64
Отсутствует
Будет , но не такое.
это значит вместо светлых кнопок будут черные (понятно, что текст "Закрыть Firefox" лучше читается), я думал избавиться вообще от этого окна как от бага ...
Отредактировано ALEX_45_ORP (23-03-2020 21:50:42)
Win 10х64
Отсутствует
Приветствую!
Для 68 и старше есть дополнение, чтоб переместить строку вкладок вниз, как было в старых FF ?
С января работаю на обновлённом FF и так никак не могу понять зачем какой-то идиот табы наверх зафутболил..
В интернете ссылки на какие-то стили, но пишут, что они после обновлений постоянно слетают..
Dan Dare: Pilot Of The Foretime
Отсутствует
Приветствую!
Для 68 и старше есть дополнение, чтоб переместить строку вкладок вниз, как было в старых FF ?
С января работаю на обновлённом FF и так никак не могу понять зачем какой-то идиот табы наверх зафутболил..
В интернете ссылки на какие-то стили, но пишут, что они после обновлений постоянно слетают..
Вот вкладки внизу без стиля вложи в папку Chrome /* Вкладки внизу */
#main-window:not([inFullscreen]) #navigator-toolbox > #PersonalToolbar {
-moz-box-ordinal-group: 1 !important;}
#main-window:not([inFullscreen])[tabsintitlebar][sizemode="normal"] #navigator-toolbox {
-moz-appearance: -moz-window-titlebar !important;}
#main-window:not([inFullscreen])[tabsintitlebar][sizemode="maximized"] #navigator-toolbox {
-moz-appearance: -moz-window-titlebar-maximized !important;}
#main-window:not([inFullscreen])[tabsintitlebar]:-moz-lwtheme #navigator-toolbox {
visibility: hidden !important;}
#main-window:not([inFullscreen])[tabsintitlebar]:-moz-lwtheme #navigator-toolbox > *:not([collapsed="true"]) {
visibility: visible;}
#navigator-toolbox > #titlebar {
-moz-appearance: none !important;
-moz-box-ordinal-group: 100 !important;
--v-control-buttons-left: auto;
--v-control-buttons-right: 0;
position: static !important;}
#navigator-toolbox > #titlebar:-moz-locale-dir(rtl) {
--v-control-buttons-left: 0;
--v-control-buttons-right: auto;}/* Зум вкладок */
#main-window:not([uidensity="touch"]) :-moz-any(#titlebar,#TabsToolbar,#tabbrowser-tabs) {
--tab-min-height: 24px !important;
--toolbarbutton-inner-padding: 3px !important;
}#add-additional-top-bar,
#add-additional-bottom-bar {
--toolbarbutton-outer-padding: 0px !important;
--toolbarbutton-inner-padding: 2px !important;
min-height: 20px !important;
}
#add-additional-bottom-closebutton {
padding: 0 !important;
}
:-moz-any(#add-additional-top-bar,#add-additional-bottom-bar) .toolbarbutton-badge {
margin-inline-end: calc(-1 * (var(--toolbarbutton-outer-padding) + var(--toolbarbutton-inner-padding))) !important;
}
Отсутствует
Всем привет.
Подскажите на 56 работает автоскрытие боковой панели закладки, когда мышь не подведена к краю на сколько я понял это Sidebar.Automod из св "Меню"
// //toButtonAction: if (!event.target) this.click(); //Menu .349 const id = "Compact-Menu-menupopup", attrs = { id: id, position: "after_start", oncontextmenu: "event.preventDefault()", oncommand: "event.stopPropagation()" }; var itemTimers = {}, menubar, anchItem, menusOriginPopups, popup = document.getElementById(id), popupOpen = false; if(popup)popup.remove(); if(self.parentNode.getAttribute("id").indexOf('alette') > 0 || self.parentNode.parentNode.getAttribute("id").indexOf('alette') > 0) return; popup = self.appendChild(document.createElement("menupopup")); itemTimers.Mmenu = setTimeout(function() { for(var attr in attrs) popup.setAttribute(attr, attrs[attr]); anchItem = document.getElementById("menu_openDownloads").parentNode.firstChild; menubar = (document.getElementById("file-menu")||document.getElementById("edit-menu")||document.getElementById("view-menu")).parentNode; var menus = Array.slice(menubar.childNodes), menusFiltedPopups = []; menusOriginPopups = new Array(menus.length); for(var iM = 0; iM < menus.length; iM++){ if(menus[iM] !== null && menus[iM].firstChild){ menusFiltedPopups.push(menus[iM].firstChild); menusOriginPopups[iM] = menus[iM].firstChild; var clonedMenu = menus[iM].cloneNode(false); clonedMenu.hidden = false; clonedMenu.disabled = false; popup.appendChild(clonedMenu); if(menusOriginPopups[iM].id == 'goPopup'){ ["", "Window"].forEach(function(str) { var node = menusOriginPopups[iM].getElementsByAttribute("id", "historyUndo" + str + "Popup")[0]; var attr = node.getAttribute("onpopupshowing"); if(!attr.startsWith("this.parentNode.parentNode.parentNode"))node.setAttribute("onpopupshowing", "this.parentNode.parentNode.parentNode" + attr.substring(39)); }); }; } else menusOriginPopups[iM] = null; }; popup.addEventListener("mouseenter", function onPS(e) { if(popupOpen) return; popupOpen = true; for(var ip = 0; ip < popup.childNodes.length && ip < menusFiltedPopups.length; ip++)popup.childNodes[ip].appendChild(menusFiltedPopups[ip]); for(var ip = 0; ip < menus.length; ip++)if(menusOriginPopups[ip])menus[ip].style.visibility = 'visible'; }, false); popup.addEventListener("popuphidden", function onPH(e) { if(e.originalTarget != this) return; for(var ip = 0; ip < menubar.childNodes.length && ip < menusOriginPopups.length; ip++)menubar.childNodes[ip].appendChild(menusOriginPopups[ip]); popupOpen = false; }, false); self.onclick = function(e) { if (!e.button && e.target == self) popup.openPopup(self); if (e.button == 2 && e.target == self && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey){ e.preventDefault(); PanelUI.show(); //popup.openPopup(self); } if(e.button == 1)stopTor(); }; }, 1000); addDestructor(()=> { for (itemTimer in itemTimers)clearTimeout(itemTimers[itemTimer]); if(popupOpen && menubar)for(var idd = 0; idd < menubar.childNodes.length && idd < menusOriginPopups.length; idd++)menubar.childNodes[idd].appendChild(menusOriginPopups[idd]); if(anchItem)while(anchItem.previousSibling)anchItem.previousSibling.remove(); }); var temp1, temp2; // "Дублировать вкладку" в контекстном меню вкладки, от 27.09.2016. ................. (tabContextMenu => { var menuitem = document.createElement("menuitem"); menuitem.setAttribute("label", "Дублировать вкладку"); menuitem.onclick =()=> { temp1 = cbu.getPrefs("browser.tabs.insertRelatedAfterCurrent"); cbu.setPrefs("browser.tabs.insertRelatedAfterCurrent", true); setTimeout(() => cbu.setPrefs("browser.tabs.insertRelatedAfterCurrent", temp1), 300); gBrowser.selectedTab = gBrowser.duplicateTab(TabContextMenu.contextTab); }; tabContextMenu.insertBefore(menuitem, tabContextMenu.children[0]); // [1] определяет место нахождение пункта меню addDestructor(()=> menuitem.remove()); })(document.getElementById("tabContextMenu")); // Добавить новый пункт "Перезапуск" в главном меню, от 20.06.2016. ...................... (()=> { var menuItem = document.createElement("menuitem"); menuItem.setAttribute("id", "restart_firefox"); menuItem.setAttribute("label", "Перезапуск"); menuItem.onclick =()=> setTimeout(()=> {var startup = Services.startup; startup.quit(startup.eForceQuit | startup.eRestart)}, 0); itemTimers.restartmenu = setTimeout(function() {popup.appendChild(menuItem)}, 1600); })(); // Предотвращаем постоянную работу по кругу скрипта построения эскизов, когда он на каком-то зависает. (()=> { var captTimer, ccash = true; function unlockCapturing() { if(content.location.toString() != 'about:newtab') return; if(ccash){ cbu.setPrefs('browser.newtab.preload', false); cbu.setPrefs('browser.pagethumbnails.capturing_disabled', false); }; ccash = false; clearTimeout(captTimer); captTimer = setTimeout(function() { cbu.setPrefs('browser.pagethumbnails.capturing_disabled', true); cbu.setPrefs('browser.newtab.preload', true); ccash = true; clearTimeout(captTimer); }, 20000); }; function lockCapturing() { if(ccash)return; //cbu.setPrefs('browser.pagethumbnails.capturing_disabled', true); cbu.setPrefs('browser.newtab.preload', true); //ccash = true; //clearTimeout(captTimer); }; if(!cbu.getPrefs('browser.cache.disk.parent_directory')) { getBrowser().addEventListener("mouseenter", unlockCapturing, false); document.getElementById("tabbrowser-tabs").addEventListener("mouseenter", lockCapturing, false); addDestructor(() => { getBrowser().removeEventListener("mouseenter", unlockCapturing, false); document.getElementById("tabbrowser-tabs").removeEventListener("mouseenter", lockCapturing, false); cbu.setPrefs('browser.pagethumbnails.capturing_disabled', true); cbu.setPrefs('browser.newtab.preload', true); }); } else cbu.setPrefs('browser.pagethumbnails.capturing_disabled', true); })(); // Настройка экспресс-панели (()=> { var Ewidth;//ширина оригинальной плитки - 294 пикселя if(!window.opener && (Ewidth = cbu.getPrefs('CB.elementwidth')) && Ewidth && (Ewidth = parseInt(Ewidth,10)) && Ewidth){ var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); Ewidth = Ewidth < 50 ? 50 : Ewidth; var Eheight = 32 + Math.floor(Ewidth*0.58); var styles = '@-moz-document url("about:newtab"){\ .newtab-cell {max-height:'+Eheight+'px !important;max-width:'+Ewidth+'px!important;margin:0px 5px!important;}\ #newtab-margin-top {display:none!important;}\ .newtab-side-margin {max-width:10px!important;width:10px!important;}\ #newtab-grid {overflow:auto!important;max-height:none!important;max-width:none!important;height:auto!important;width:auto!important;padding:0!important;margin:0!important;border:none!important;-moz-box-flex:5!important;}\ #newtab-margin-bottom {max-height:20px!important;height:20px!important;}\ }\ '; stylesuri = makeURI("data:text/css," + encodeURIComponent(styles)); try { sss.unregisterSheet(stylesuri, 0) } catch(e) {}; sss.loadAndRegisterSheet(stylesuri, 0); }; })(); //Добавить новый пункт "Восстановить иконки всех закладок" в меню "Закладки", от 04.10.2016. .............. (()=> { //Создать новый пункт в меню "Закладки" .... var menuitem = document.createElement("menuitem"); //var sep = document.getElementById("organizeBookmarksSeparator"); itemTimers.restBmenu = setTimeout(function() { anchItem.parentNode.insertBefore(menuitem, anchItem); }, 2800); menuitem.setAttribute("label", "Восстановить иконки всех закладок"); menuitem.onclick =e=> chooseBookmarks(); // Перебрать все http(s) закладки .... function chooseBookmarks(id = 1) { var folder = PlacesUtils.getFolderContents(id).root; folder.QueryInterface(Ci.nsINavHistoryContainerResultNode); folder.containerOpen = true; for ( var i = 0; i < folder.childCount; i++ ) { var child = folder.getChild(i); PlacesUtils.nodeIsFolder(child) ? chooseBookmarks(child.itemId) : child.uri.startsWith("http") && child.icon == '' && getSiteFavicon(child.uri); } folder.containerOpen = false; }; // Добавить иконки к закладкам с одинаковыми адресами .... function setBookFavicon(siteURI, faviconURI) { var iconURI = Services.io.newURI( faviconURI, null, null); var bookmarkURI = Services.io.newURI( siteURI, null, null ); PlacesUtils.favicons.setAndFetchFaviconForPage( bookmarkURI, iconURI, false, this.FAVICON_LOAD_NON_PRIVATE, null, Services.scriptSecurityManager.getSystemPrincipal() ) }; // Получить адрес иконки закладки и запустить установку иконки .... function getSiteFavicon(siteURI) { var hostURI = "http://" + siteURI.split(/\/+/g)[1] + "/"; var faviconURI = hostURI + "favicon.ico"; // адрес иконки, если не получить адрес иконки из сайта // получить адрес иконки из документа сайта закладки var xhr = new XMLHttpRequest(); xhr.open("GET", siteURI, true); xhr.responseType = "document"; xhr.onload = xhr.onerror =()=> { var doc = xhr.responseXML; if ( doc !== null ) { var links = doc.getElementsByTagName("link"); [...links].forEach(link=> { if ( /(?:^|\s)icon(?:\s|$)/.test(link.rel.toLowerCase()) ) faviconURI = link.href }); } setBookFavicon(siteURI, faviconURI); // запустить установку иконки } xhr.send(); }; })(); //Ariadne.Flip custombuttons.alertSlide1 = function(sTitle) { var as = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService); as.showAlertNotification('chrome://global/skin/icons/information-16.png', "", sTitle, false, "", null); setTimeout(() => as.closeAlert(), 999); }; (()=> { var showCount = 0, noFlip = false, unlockTimer, lastShownTab = function() { let orderMax = 0, currentOrder = gBrowser.selectedTab.getAttribute('showOrder'), tabOrder = 0, lST = null; currentOrder = currentOrder ? parseInt(currentOrder, 10) : 0; for(ii = 0; ii < gBrowser.tabs.length; ii++) { tabOrder = parseInt(gBrowser.tabs[ii].getAttribute('showOrder'), 10); if(tabOrder != currentOrder){ gBrowser.tabs[ii].removeAttribute('_YesClck'); if(tabOrder > orderMax) { lST = gBrowser.tabs[ii]; orderMax = tabOrder; } } }; if(lST) return lST; for(ii = 0; ii < gBrowser.tabs.length; ii++) { tabOrder = -parseInt(gBrowser.tabs[ii].getAttribute('showOrder'), 10); if(-tabOrder != currentOrder) { gBrowser.tabs[ii].setAttribute('showOrder', tabOrder); if(tabOrder > orderMax) { lST = gBrowser.tabs[ii]; orderMax = tabOrder; } } }; return lST; }; function clickToFlip(event) { if(event.button || noFlip || !event.target.hasAttribute('_YesClck')) return; event.stopPropagation(); event.target.removeAttribute('_YesClck'); let lShowT = lastShownTab(); if(lShowT) { event.target.setAttribute('showOrder', -parseInt(event.target.getAttribute('showOrder'), 10)); gBrowser.selectedTab = lShowT; } else { setTimeout(() => custombuttons.alertSlide1("Нет других просмотренных ранее вкладок"), 100); setTimeout(() => gBrowser.selectedTab.setAttribute('_YesClck', true), 800); }; }; function onTabClose(e) { if(gBrowser.selectedTab != e.target)return; let lastSh = lastShownTab(); if(lastSh) gBrowser.selectedTab = lastSh; }; setTimeout(() => { if(gBrowser.selectedTab) { if(parseInt(gBrowser.selectedTab.getAttribute('showOrder'), 10) > 0) { showCount = parseInt(gBrowser.selectedTab.getAttribute('showOrder'), 10); } else { gBrowser.selectedTab.setAttribute('showOrder', ++showCount); gBrowser.selectedTab.setAttribute('_YesClck', true); } }; }, 800); function onTabselect(e) { setTimeout(() => gBrowser.selectedTab.setAttribute('_YesClck', true), 150); for(ii = 0; ii < gBrowser.tabs.length; ii++)gBrowser.tabs[ii].removeAttribute('_YesClck'); e.target.setAttribute('showOrder', ++showCount); }; function onMouseDown(e) { if(!e.target.hasAttribute('_YesClck')){ noFlip = true; clearTimeout(unlockTimer); unlockTimer = setTimeout(function() { noFlip = false; clearTimeout(unlockTimer); }, 2000); } }; function onMouseUp(e) { clearTimeout(unlockTimer); setTimeout(() => noFlip = false, 100); }; addEventListener("mouseup", onMouseUp, false, gBrowser.tabContainer); addEventListener("mousedown", onMouseDown, false, gBrowser.tabContainer); addEventListener("TabSelect", onTabselect, false, gBrowser.tabContainer); addEventListener("TabClose", onTabClose, false, gBrowser.tabContainer); addEventListener("click", clickToFlip, false, gBrowser.tabContainer); addDestructor(()=>{ removeEventListener("mouseup", onMouseUp, false, gBrowser.tabContainer); removeEventListener("mousedown", onMouseDown, false, gBrowser.tabContainer); removeEventListener("TabSelect", onTabselect, false, gBrowser.tabContainer); removeEventListener("TabClose", onTabClose, false, gBrowser.tabContainer); removeEventListener("click", clickToFlip, false, gBrowser.tabContainer); }); })(); // Раскукоживатель коротких ссылок, от 28.08.2016 ((cntxtMenu, elm, mItem) => { mItem.id = "cb-unshorten-url"; mItem.setAttribute("label", "Раскукожить ссылку"); mItem.setAttribute("class", "menuitem-iconic"); mItem.setAttribute("image", self.image); elm.parentNode.insertBefore(mItem, elm); const alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); var url, link, isUnshortened, // Сервисы сокращения ссылок. Можно добавлять свои. Работать, в теории, должно с любыми shortenerServices = [ "tinyurl.com", "po.st", "img.ly", "bit.ly", "goo.gl", "youtu.be", "t.co", "db.tt", "u.to", "shortlinks.de" ], // Опции: options = { replaceShortenedLinks: true, // Заменять адрес ссылки на странице раскукоженной showAlert: true, // Показывать всплывающие уведомления clickAlertToOpen: true, // Клик по уведомлению с раскукоженной ссылкой - откроет ее в новой вкладке showOnShortenedTextLinks: true, // Показывать пункт контекстного меню на выделенных текстовых ссылках promptDialogForTextLinks: true, // Показывать диалог с результатом для текстовых ссылок copyToClipboard: true, // Копировать раскукоженную ссылку в буфер обмена changeColorForUnshortenedLinks: true, // Индикация цветом ссылки ожидания ответа и результата changeColorBackAfterTimeout: false, // Возвращать цвет ссылок к исходному, после паузы unshortenedLinksColor: "lightgreen" // Цвет раскукоженных ссылок }, isFF32 = (parseFloat(Services.appinfo.platformVersion) >= 32); function isShortenedURL(aURL) { if (aURL && (gContextMenu && (gContextMenu.onLink && !gContextMenu.isTextSelected || gContextMenu.onPlainTextLink) || !aURL.match(/\s/) && !!aURL.match(/\//))) { if (!aURL.startsWith('http')) aURL = 'http://' + aURL.split(/^((\w+)?:\/\/)?(.+)/)[3]; var host = aURL.split(/http(s)?:\/\/([\w\.-]+)/)[2]; if (shortenerServices.indexOf(host) !== -1) { url = aURL; return true; } } return false; }; function promptDialog(aURL) { var input = {value: aURL}; var prompt = Services.prompt.prompt(null, options.copyToClipboard ? "Раскукоженная ссылка скопирована!" : "Ссылка раскукожена!", "Отредактировать и открыть в новой вкладке?", input, null, {value: false}); if (prompt) gBrowser.selectedTab = gBrowser.addTab(input.value); }; function xhr(aURL, cb) { let reURL = null; let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest); let alertListener = { observe: function(aSubject, aTopic, aData) { if (aTopic != 'alertclickcallback') return; gBrowser.selectedTab = gBrowser.addTab(aData); } } let handler = ev => { evf(m => xhr.removeEventListener(m, handler, !1)); switch (ev.type) { case 'load': if (xhr.status == 200 || (isFF32 ? xhr.responseURL : xhr.channel.URI.spec) != aURL) { reURL = isFF32 ? xhr.responseURL : xhr.channel.URI.spec; cb(reURL); options.showAlert && (options.clickAlertToOpen ? alertsService.showAlertNotification(self.image, self.label, 'Ссылка раскукожена!\nНажмите, чтобы открыть в новой вкладке:\n' + (reURL.length > 100 ? ([reURL.slice(0,45), reURL.slice(-45)]).join('...') : reURL), true, reURL, alertListener, "") : alertsService.showAlertNotification(self.image, self.label, 'Ссылка раскукожена:\n' + (reURL.length > 100 ? ([reURL.slice(0,45), reURL.slice(-45)]).join('...') : reURL), false, "", null, "")); break; } default: cb(reURL); options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Ошибка при попытке получить ссылку: ' + xhr.statusText + ' [' + ev.type + ':' + xhr.status + ']', false, "", null, ""); break; } }; let evf = f => ['load', 'error', 'abort'].forEach(f); evf(m => xhr.addEventListener(m, handler, false)); try { xhr.mozBackgroundRequest = true; xhr.open('HEAD', aURL, true); xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS | Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_CACHING; xhr.setRequestHeader("User-Agent", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", false); xhr.setRequestHeader("Accept", "text/html,text/xml", false); xhr.send(null); } catch (ex) { cb(reURL); options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Неправильная ссылка: ' + (ex.toString().length > 100 ? ([ex.toString().slice(0,45), ex.toString().slice(-45)]).join('...') : ex.toString()), false, "", null, ""); } }; function shouldDisplay() { mItem.label = "Раскукожить ссылку"; if (gContextMenu.onLink && !gContextMenu.isTextSelected) { url = gContextMenu.getLinkURL(); link = gContextMenu.link; isUnshortened = link.getAttribute("cb-short-url"); if (isUnshortened) mItem.label = "Скукожить ссылку"; } if (gContextMenu.onPlainTextLink) { url = gContextMenu.linkURL; } if (!gContextMenu.onPlainTextLink && gContextMenu.isTextSelected) { url = document.commandDispatcher.focusedWindow.content.document.getSelection().toString().trim(); } mItem.hidden = !((gContextMenu.onLink || (gContextMenu.onPlainTextLink || gContextMenu.isTextSelected) && options.showOnShortenedTextLinks) && isShortenedURL(url) || gContextMenu.onLink && isUnshortened); }; cntxtMenu.addEventListener("popupshowing", shouldDisplay, false); addDestructor(()=> { cntxtMenu.removeEventListener("popupshowing", shouldDisplay, false); cntxtMenu.removeChild(mItem); }); mItem.onclick =()=> { if (gContextMenu.onLink && !gContextMenu.isTextSelected) { if (!isUnshortened) { if (options.changeColorForUnshortenedLinks) { var linkClr = link.style.getPropertyValue('color'); linkClr && link.style.setProperty('-cb-old-color', linkClr, link.style.getPropertyPriority('color')); var oldClr = link.style.getPropertyValue('-cb-old-color'); var oldClrPrrt = link.style.getPropertyPriority('-cb-old-color'); link.style.setProperty("color", "orangered", "important"); } xhr(url, reURL => { if (!reURL) { options.changeColorForUnshortenedLinks && (oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color")); return; } if (options.changeColorForUnshortenedLinks) { link.style.setProperty("color", options.unshortenedLinksColor, "important"); options.changeColorBackAfterTimeout && setTimeout(()=> oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color"), 1000); } options.copyToClipboard && gClipboard.write(reURL); options.replaceShortenedLinks && (link.setAttribute("cb-short-url", link.href), link.setAttribute("href", reURL)); }) } else { oldClr ? (link.style.setProperty("color", oldClr, oldClrPrrt), link.removeProperty('-cb-old-color')) : link.style.removeProperty("color"); link.setAttribute("href", isUnshortened); link.removeAttribute("cb-short-url"); } } else { xhr(url, reURL => { if (!reURL) return; options.copyToClipboard && gClipboard.write(reURL); options.promptDialogForTextLinks && promptDialog(reURL); }) } }; /* this._handleClick =()=> { url = gClipboard.read(); if (!url || !isShortenedURL(url)) { options.showAlert && alertsService.showAlertNotification(self.image, self.label, 'Неправильная ссылка!', false, "", null, ""); return; } xhr(url, reURL => { if (!reURL) return; options.copyToClipboard && gClipboard.write(reURL); promptDialog(reURL); }) }; this.tooltipText = "ПКМ: Раскукожить ссылку в буфере обмена";*/ })(document.getElementById("contentAreaContextMenu"), document.getElementById("context-sep-open"), document.createElement("menuitem")); //Sidebar.Switch (()=> { var txtSwitchTo = 'Показать ', txtBookmarks = 'Закладки', txtHistory = 'Журнал'; var sidebarheader = document.getElementById("sidebar-header"); var sidebarBox = document.getElementById("sidebar-box"); var sidebartitl = document.getElementById("sidebar-title"); var sidebartitlValu = sidebartitl.getAttribute("value"); function showSwitch() { if(!sidebartitl.getAttribute("value").startsWith(txtSwitchTo)) sidebartitlValu = sidebartitl.getAttribute("value"); sidebartitl.style.setProperty('background-color','#EDF5F7','important'); if(sidebarBox.getAttribute("sidebarcommand") != 'viewBookmarksSidebar') { sidebartitl.setAttribute("value", txtSwitchTo+txtBookmarks); } else { sidebartitl.setAttribute("value", txtSwitchTo+txtHistory); } }; function showSwitchOut() { sidebartitl.setAttribute("value", sidebartitlValu); sidebartitl.style.setProperty('background-color','',''); }; function showSwitchOut2(e) { e.stopPropagation(); sidebartitl.setAttribute("value", sidebartitlValu); sidebartitl.style.setProperty('background-color','',''); }; function clickToSwitch(e) { if(e.button > 0) return; if(e.target.tagName == 'toolbarbutton') { e.stopPropagation(); return; }; if(sidebarBox.getAttribute("sidebarcommand") != 'viewBookmarksSidebar') { SidebarUI.toggle('viewBookmarksSidebar'); } else { SidebarUI.toggle('viewHistorySidebar'); } setTimeout(() => { if(!sidebartitl.getAttribute("value").startsWith(txtSwitchTo)) { sidebartitlValu = sidebartitl.getAttribute("value"); if(sidebarBox.getAttribute("sidebarcommand") != 'viewBookmarksSidebar') { sidebartitl.setAttribute("value", txtSwitchTo+txtBookmarks); } else { sidebartitl.setAttribute("value", txtSwitchTo+txtHistory); } } }, 10); }; sidebarheader.addEventListener('mouseover', showSwitch, false); sidebarheader.addEventListener('mouseout', showSwitchOut, false); sidebarheader.getElementsByTagName('toolbarbutton')[0].addEventListener('mouseover', showSwitchOut2, false); sidebarheader.getElementsByTagName('toolbarbutton')[0].addEventListener('mouseout', showSwitch, false); sidebarheader.addEventListener('click', clickToSwitch, false); addDestructor(()=>{ sidebarheader.removeEventListener('mouseover', showSwitch, false); sidebarheader.removeEventListener('mouseout', showSwitchOut, false); sidebarheader.getElementsByTagName('toolbarbutton')[0].removeEventListener('mouseover', showSwitchOut2, false); sidebarheader.getElementsByTagName('toolbarbutton')[0].removeEventListener('mouseout', showSwitch, false); sidebarheader.removeEventListener('click', clickToSwitch, false); }); })(); [b]//Sidebar.Automod[/b] var vso = { name: "Sidebar.Automod", btn: this, toolbarContextMenu: document.getElementById("toolbar-context-menu"), deck: document.getElementById("content-deck"), id: "cb-am", init: function() { if(gBrowser.currentURI.spec == "about:customizing") return; var vt = this.initVT(); var vso = this; this.sidebarSplitter = document.getElementById("sidebar-splitter"); this.sidebarBox = document.getElementById("sidebar-box"); this.lastSidebar = this.sidebarBox.getAttribute("sidebarcommand"); this.sidebarBox.removeEventListener("mouseleave", this, false); this.sidebarBox.addEventListener("mouseleave", this, false); window.addEventListener("resize", this, false); window.addEventListener("fullscreenchange", this, false); window.addEventListener("beforecustomization", this, false); this.toolbarContextMenu.addEventListener("command", this, false); this.resize(); this.deck.style.setProperty('margin-left', '4px', 'important'); this.vt.addEventListener("mouseenter", this, false); this.vt.addEventListener("mouseout", this, false); getBrowser().removeEventListener("mousemove", vso.mousemove, false); if(!vso.sidebarBox.getAttribute("hidden")) getBrowser().addEventListener("mousemove", vso.mousemove, false); vso.btn._destructors.push({ context: vso, destructor: vso.destroy }); }, fullscreenchange: function(e) { if(!document.fullscreenElement){ if(vso.vt && !vso.vt.collapsed)vso.deck.style.setProperty('margin-left', '4px', 'important'); } else vso.deck.style.setProperty('margin-left', '', ''); }, mouseleave: function(e) { getBrowser().removeEventListener("mousemove", vso.mousemove, false); getBrowser().addEventListener("mousemove", vso.mousemove, false); }, mouseenter: function(e) { clearTimeout(this.Timer); if(this.sidebarBox.getAttribute("hidden")) { let dY = e.screenY - vso.vt.boxObject.screenY; this.Timer = setTimeout(function() { if(vso.sidebarBox.getAttribute("hidden")) { SidebarUI.show(vso.lastSidebar ? vso.lastSidebar : 'viewBookmarksSidebar'); getBrowser().removeEventListener("mousemove", vso.mousemove, false); getBrowser().addEventListener("mousemove", vso.mousemove, false); }; }, (e.relatedTarget && e.relatedTarget.id == 'browser-panel' ? 300 : 0)+(dY > 50 ? 150 : -dY*10 + 650)); }; }, mouseout: function(e) { clearTimeout(this.Timer); if(e.relatedTarget && vso.sidebarBox.getAttribute("hidden") && (e.relatedTarget.id != 'browser-panel' || window.windowState == 3) && e.screenY > vso.vt.boxObject.screenY + 20){ SidebarUI.show(vso.lastSidebar ? vso.lastSidebar : 'viewBookmarksSidebar'); getBrowser().removeEventListener("mousemove", vso.mousemove, false); getBrowser().addEventListener("mousemove", vso.mousemove, false); } }, beforecustomization: function(e) { vso.destroy(); }, mousemove: function(e) { if(vso.sidebarBox.getAttribute("hidden")) { getBrowser().removeEventListener("mousemove", vso.mousemove, false); } else { if(e.screenX > (50 + vso.sidebarSplitter.boxObject.screenX)) { getBrowser().removeEventListener("mousemove", vso.mousemove, false); vso.lastSidebar = vso.sidebarBox.getAttribute("sidebarcommand"); SidebarUI.hide(); } } }, destroy: function(reason) { window.removeEventListener("resize", this, false); window.removeEventListener("fullscreenchange", this, false); window.removeEventListener("beforecustomization", this, false); if(this.vt) { this.vt.removeEventListener("mouseenter", this, false); this.vt.removeEventListener("mouseout", this, false); this.vt.parentNode && this.vt.parentNode.removeChild(this.vt); }; this.sidebarBox.removeEventListener("mouseleave", this, false); getBrowser().removeEventListener("mousemove", vso.mousemove, false); this.deck.style.setProperty('margin-left', '', ''); this.toolbarContextMenu.removeEventListener("command", this, false); }, handleEvent: function(e) this[e.type](e), command: function(e) { if(e.target.id != "toggle_" + this.id) return; e.preventDefault(); if(this.vt.collapsed) { if(this.vt) { this.vt.removeEventListener("mouseenter", this, false); this.vt.removeEventListener("mouseout", this, false); }; this.sidebarBox.removeEventListener("mouseleave", this, false); getBrowser().removeEventListener("mousemove", vso.mousemove, false); this.deck.style.setProperty('margin-left', '', ''); } else { if(this.vt) { this.vt.addEventListener("mouseenter", this, false); this.vt.addEventListener("mouseout", this, false); }; this.sidebarBox.removeEventListener("mouseleave", this, false); this.sidebarBox.addEventListener("mouseleave", this, false); getBrowser().removeEventListener("mousemove", vso.mousemove, false); if(!vso.sidebarBox.getAttribute("hidden")) getBrowser().addEventListener("mousemove", vso.mousemove, false); this.deck.style.setProperty('margin-left', '4px', 'important'); }; }, resize: function(e) { this.vt.style.maxHeight = this.deck.boxObject.height - 1 + "px"; }, initVT: function() { var id = this.id; var vt = this.vt = document.getElementById(id) || document.createElement("toolbar"); var attrs = { id: id, mode: "icons", iconsize: "small", orient: "vertical", customizable: "false", persist: "collapsed", toolbarname: this.name, fullscreentoolbar: "true", class: "chromeclass-toolbar", style: "-moz-appearance: none; display: -moz-box; height: 100%;border:0!important;padding:0px!important; position: fixed;background: #AAAAAA; min-width: 2px;outline: 3px solid #BBBBBB;margin-top:3px!important;" }; for(var attr in attrs) vt.setAttribute(attr, attrs[attr]); if(!vt.parentNode) gNavToolbox.appendChild(vt); return vt; } }; if(!cbu.getPrefs('CB.noautomod'))vso.init(); //Custom.Torifier var imgOrig = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAABG0lEQVR42mP8//8/AxgY2Hv+90vM+c8IE2EE8SCMzNz1fz59D2CAAhYQ8fD+fRifAa4HLuAVnQIX+f33NwMLCxsHXPbft/8MLHdvXkfVArLl+omzAYyMjAyY4D+mJeiAiYEAAFvBxykUgE3l7+8/CVvBqGFk9f8fA6YDQRo1LYw3sMipqgE9y4LbBIJWeEQk/2fj5MQq+eLRQyJM0LZyxqlCWV9rA2NkZsV/Vk52DMl/QPzp+7sNBK0gGNI61i7/RUXFGdjZ2UnS+PPnD4aP798xUO4CUFzfPnMhAGIOI5Ha/oNTkYqpwQZwFKpo6zKwMbOSZPPv37+Ji2mCXjBzC/gvLS/PwM7JDXQWcV74B/TCz2/fGF49e0K5CwCQq3eH2QS1RAAAAABJRU5ErkJggg==" var imgOrange = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAABEElEQVR42q1T3UrDMBT+TnKGQze77gcEZfhCfRQRvPFWUPDOh1lvBRGvFAR9C2EqddKiW9Ojia6gZrRjfoSQnJ985y8kInC4POjJ7elQaC4he3OHu6PhaMpFhG+w3dJxOr+j9CkFNyc7paQwAtZalVoRA548vP50sSyP4yQCEXz4Q/IbChVwFLrDkc+0yItqCjrfCwQ+m0/H/qATc6vfgtL+DJDXyIKuj7eFWXuVaZLVeOFiP1xoEYbtmO7PdkWxrwiASfK4kqKy0jaEZrAG1dBLOZqZwTSbYfUIbK+fnifRV7fqPkZu9bqbsRvyYKsNxbQUsx13vOMfUrg6HMhGdx26oRZ9Ct8cuiJmL2+rR/ABvC57Gs27SRgAAAAASUVORK5CYII="; var imgGreen = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAABHElEQVR42mP8//8/Axgoz+n8b7l+3n9GmAgjiAdmmG/u3fT/B48vAxSwgIhX797C+AxwPXABs9Uz4SJ//v5BGAYCv3//YWB5/uoFqhaQLU8efvFlZGRkwABA8zEsQQdMDAQA2AoeNhlfRgZMK/78/UfYCka5KU3//2F1338GGXmezSyioqIMzEy4nPKFCCtMVs38z8rKilXy/fv3RJigMLMNpwpxKfbNjA7bVvxnYcZ05H8g/PLryWaCVhAMaYVZbf/5efgZWFlYSNL4+/dvhm/fvzFQ7gJQXD9//A2aaBmJ1AZMZkAoIcu5GexuKQkpBhZmVpJs/gtM7v8Y3lPBCxoL+v4LCwoysLKxMzAS6QVQFP7+9Zvhw0cquAAAZAyCFY7eC5cAAAAASUVORK5CYII="; var imgSGreen = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAAA90lEQVR42q1SSw6CMBCdKQUC4ofoeXSpG+7kXk6jJyDRxIUxceEtNC5MNFDKSEXxBwGjb9FM55P3+qZIRKCgTYY++Qd/jPcMdjbuNcLmdjRl4dKDG7g6olN0v0M+kyfa606eIUqAo4aPsmTAw2P4OqJYxC7wAOETVEDyDgYVuFIYbOUVFVOR1RRoBRZRiUC9N5hxwzHSNiycTqAOhbLuxa0niJOoI3Jul3Zwtz/jlmsDltgV1fGh0mlrYZNu8pSFfTVIMgEp5B8UqF3H+yDbNdalz5p5NzVJhWbL/P4JCYGEf5jYWDpk2Dqgxsq+1Cc7ZSaKc/y7ggu8xW7YWfjMLwAAAABJRU5ErkJggg=="; var imgRed = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAABAElEQVR42qVSPU/DQAz1C86lV4agSgxsVCpSB/4AAxsDS/8s+TGoVcWHhMTQoRMtSQ8euYRGggYuVd9wOttnv2efQVIqzMZ9Pl+fEFsPvFVfbtI7vslEvqH+yBfF1pYmp3E8XaWNh46iUDRRH9H31/xnimdZzfOJQHbBFpLfiCSAikJVWyl89SAF7oeWdQO7AvujJNPeqREc/VMhSPFYji5StAaL5aZDhenI/vmid24yvNwOCKC1C+dcFqQITnp6YRmnsSDGXoksKG71IYcr8H+9fijqpe0qgvVbOzRZteT2LBGYPVtwrCod3sL88phmYCRKSgXoqKIk/dyw26aE8AV8bnPNy+EmrQAAAABJRU5ErkJggg=="; var imgViol = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAB7CAAAewgFu0HU+AAAA/0lEQVR42q2SO4+CQBDHZ5ZdFC/nq/Q78T2vIFdIZ2Fz5fko1PgNLDXB4oAFxlmiJKeQxei/2LDz+s0Og0QEpb57K5oPd4Q3C5pb+RH0N9M+og9XSXNEaXy7Q5VTGWaDbWUp2CklYuXNgA3H5O9/iqFkaexDgx4g9xJgUYmYKMUIfHDmVNgR+OX9EjTESLcbypHb5eJYGxBxdTtiNtiQxPrHRDptUSHwFs0RqhPiz3hPTi2C4KB1aEXYJ+0tqackOCieSswZHOcZvKED/te5TnzzJmyZdF18cMyQTIGREL5AfIps1v1UFG8Y4vRjTZ9uB5TpoG0XDM14lc9avz7ECyYbf9iUaPRTAAAAAElFTkSuQmCC"; var origTxt = 'Меню'; var txtTCErr = origTxt + '\nНет интернет-соединения через TOR'; var txtCC = origTxt + '\nИнтернет исправен. Проверка интернет-соединения производится.'; var txtCE = origTxt + '\nНет интернет-соединения.'; var txtOF = origTxt + '\nВ браузере включен оффлайн-режим'; var txtOFT = origTxt + '\nВключен оффлайн-режим. Соединение настроено через TOR'; var txtTErr = origTxt + '\nНет связи с процессом Tor.exe. В браузере включен режим через TOR'; var txtTM = origTxt + '\nВключен режим интернет-соединения через TOR'; var txtTMC = origTxt + '\nИнтернет исправен. Включен режим соединения через TOR'; var txtStopStart = 'Остановить запуск'; var menuItemT1 = document.createElement("menuitem"); menuItemT1.setAttribute("id", "start_tor"); menuItemT1.setAttribute("label", "Использовать TOR"); menuItemT1.setAttribute('type', 'checkbox'); itemTimers.usetor = setTimeout(function() {popup.insertBefore(menuItemT1, popup.lastChild)}, 1800); menuItemT1.onclick = () => setTimeout(() => { if(!!menuItemT1.getAttribute('checked')) { if(menuItemT1.getAttribute('label') != txtStopStart) { startTor(); menuItemT1.setAttribute("label", txtStopStart); } else { stopTor(); } } else { stopTor(); } }, 100); var menuItemT2 = document.createElement("menuitem"); menuItemT2.setAttribute("id", "restart_tor"); menuItemT2.setAttribute("label", "TOR рестарт"); menuItemT2.onclick = () => setTimeout(() => restartTor(), 10); var menuItemCC = document.createElement("menuitem"); menuItemCC.setAttribute("id", "check_conn"); menuItemCC.setAttribute("label", "Проверять наличие интернет-соединения"); menuItemCC.setAttribute('type', 'checkbox'); itemTimers.checkmenu = setTimeout(function() {anchItem.parentNode.insertBefore(menuItemCC, anchItem)}, 1800); self.onmouseenter = function(e) { menuItemCC.setAttribute('checked', !!cbu.getPrefs('CB.ct.checkconnection')); menuItemT1.setAttribute('checked', isTorMod); if(isTorMod) { if(!document.getElementById("restart_tor")) popup.insertBefore(menuItemT2, popup.lastChild); } else { if(document.getElementById("restart_tor")) menuItemT2.remove(); } }; menuItemCC.onclick = () => setTimeout(() => { isCheckConnection = !!menuItemCC.getAttribute('checked'); cbu.setPrefs('CB.ct.checkconnection', isCheckConnection); clearCheckTimeouts(); if(isCheckConnection) { itIsPrimWin = Date.now().toString(); cbu.setPrefs('CB.ct.primwintime', itIsPrimWin); sendCheck(rndBeacon()); } else { if(sCount < 35)cbu.setPrefs('CB.ct.neterror', false); } }, 100); if(!cbu.getPrefs('CB.ct.nogooglebeacons')){ var netBeacons = ['http://google.com', 'http://google.ru', 'http://google.com.ua', 'http://google.co.in', 'http://google.co.jp', 'http://google.de', 'http://google.co.uk', 'http://google.fr', 'http://google.it', 'http://google.es', 'http://google.com.hk', 'http://google.ca']; }else{ var netBeacons = ['http://duckduckgo.com?', 'http://otf.msn.com/c.gif?', 'http://ask.com', 'http://office.com', 'http://bing.com', 'http://microsoft.com', 'http://adobe.com', 'http://ask.fm', 'http://aolsearch.com', 'http://answers.com', 'http://stackexchange.com']; }; var rndBeacon = function() { let iB = Math.floor(Math.random() * netBeacons.length * 0.66); let rndB = netBeacons[iB]; netBeacons.splice(iB, 1); netBeacons.push(rndB); return rndB; }; var onlineMode = navigator.onLine ? 1 : 0; var relativPathToTor_bat = '\\TorExpertBundle\\StartTor.bat'; var sCount = 0; var itIsPrimWin = ''; var torReady = false; var acccheckTor = true; var startInProc = 0; var restartInProc = 0; var cacheParams = ['network.proxy.ftp', 'network.proxy.ftp_port', 'network.proxy.http', 'network.proxy.http_port', 'network.proxy.no_proxies_on', 'network.proxy.socks', 'network.proxy.socks_port', 'network.proxy.socks_remote_dns', 'network.proxy.socks_version', 'network.proxy.type']; var accFlag = true; var goodCnt = 0; var attCnt = 0; var xhrInProc = 0; var nextCheckTimer; var checkTorTimer; var noResponseTimer; var noResponseTimer2; var preventTimer; var preventTimer2; var Rtimer; var blinksInterv; var digi = /^\d+$/; var xhrB; var isTorMod = !!cbu.getPrefs('CB.ct.tormode'); var isCheckConnection = !!cbu.getPrefs('CB.ct.checkconnection'); var noRestFlag = isTorMod && onlineMode && !window.opener; var torPort = function() { let torport = cbu.getPrefs("CB.torport"); if(torport && parseInt(torport, 10) > 0)return parseInt(torport, 10); return 9050; }; var isAccesXHR = function() { if(xhrInProc && isCheckConnection && onlineMode && itIsPrimWin && accFlag && !sCount) return true; return false; }; var sendCheck = function(url) { if(xhrInProc || !isCheckConnection || !onlineMode || !itIsPrimWin || !accFlag || sCount) return; preventTimer = setTimeout(function() { if(xhrInProc++ || !isAccesXHR()) { clearTimeout(preventTimer); return; }; xhrB = new XMLHttpRequest(); Services.console.logStringMessage('sendCheck to ' + url + '/abc'); noResponseTimer = setTimeout(function() { if(isAccesXHR()) { Services.console.logStringMessage('ResendCheck to ' + url + '/def'); xhrB.open("HEAD", url + '/' + Math.random().toString(36).slice(4, 7)); xhrB.send(); noResponseTimer2 = setTimeout(function() { if(xhrB) xhrB.abort(); xhrB = null; if(isAccesXHR()) notconnect(); xhrInProc = 0; clearTimeout(noResponseTimer2); }, 4000); if(isTorMod) checkTorTimer = setTimeout(function() { if(isAccesXHR() && isTorMod) checkTor() clearTimeout(checkTorTimer); }, 3000); } else { if(xhrB) xhrB.abort(); xhrB = null; xhrInProc = 0; return; } clearTimeout(noResponseTimer); }, 3000); xhrB.onreadystatechange = function(e) { if(xhrB.readyState < 2) { return; } if(xhrB.status > 99) { clearTimeout(noResponseTimer); clearTimeout(noResponseTimer2); clearTimeout(checkTorTimer); if(xhrB) xhrB.abort(); xhrB = null; preventTimer2 = setTimeout(function() { if(isAccesXHR()) goodconnect(); xhrInProc = 0; clearTimeout(preventTimer2); }, 5 + Math.random() * 20); } else return }; xhrB.open("HEAD", url + '/' + Math.random().toString(36).slice(4, 7)); xhrB.send(); clearTimeout(preventTimer); }, 5 + Math.random() * 20); }; document.addEventListener('offline', function() { if(!onlineMode) return; onlineMode = 0; clearCheckTimeouts(); setColor(); }, false); function clearCheckTimeouts() { clearTimeout(nextCheckTimer); clearTimeout(noResponseTimer); clearTimeout(noResponseTimer2); clearTimeout(preventTimer); clearTimeout(preventTimer2); if(xhrB) try { xhrB.abort() } catch(e) {}; xhrB = null; xhrInProc = 0; goodCnt = 0; attCnt = 0; accFlag = true; }; document.addEventListener('online', function() { if(onlineMode) return; onlineMode = 1; setColor(); if(itIsPrimWin) { setTimeout(() => { if(onlineMode++ > 1) return; clearCheckTimeouts(); sendCheck(rndBeacon()); }, 5 + Math.random() * 20); } }, false); function goodconnect() { if(!accFlag) return; accFlag = false; attCnt = 0; if(!goodCnt++)cbu.setPrefs('CB.ct.neterror', false); nextCheckTimer = setTimeout(function() { accFlag = true; sendCheck(rndBeacon()); clearTimeout(nextCheckTimer); }, 15000 + Math.random() * 7000); }; function notconnect() { if(!accFlag) return; accFlag = false; if(isTorMod && !torReady) { cbu.setPrefs('CB.ct.neterror', true); setTimeout(() => self.tooltipText = txtTErr, 200); connectToTor(); return; } nextCheckTimer = setTimeout(function() { accFlag = true; sendCheck(rndBeacon()); clearTimeout(nextCheckTimer); }, (attCnt++ < 55) ? 99+(250 + Math.random() * 125)*attCnt : 14000 + Math.random() * 7000); if(attCnt == 2) { goodCnt = 0; cbu.setPrefs('CB.ct.neterror', true); } }; gPrefService.addObserver('CB.ct.neterror', setColor, false); gPrefService.addObserver('CB.ct.tormode', setColor, false); gPrefService.addObserver('CB.ct.checkconnection', setColor, false); function setColor() { isCheckConnection = !!cbu.getPrefs('CB.ct.checkconnection'); isTorMod = !!cbu.getPrefs('CB.ct.tormode'); if(!onlineMode){ self.image = imgOrange; if(isTorMod) { self.tooltipText = txtOFT; } else { self.tooltipText = txtOF; } }else{ if(!cbu.getPrefs('CB.ct.neterror')) { if(!isCheckConnection) { if(isTorMod) { self.image = imgGreen; self.tooltipText = txtTM; } else { self.image = imgOrig; self.tooltipText = origTxt; } } else { if(isTorMod) { self.image = imgSGreen; self.tooltipText = txtTMC; } else { self.image = imgOrig; self.tooltipText = txtCC; } } } else { if(isTorMod) { self.image = imgViol; if(sCount > 34){ self.tooltipText = txtTErr; }else{ self.tooltipText = txtTCErr; } } else { self.image = imgRed; self.tooltipText = txtCE; } } } }; function connectToTor() { setTimeout(() => { if(startInProc++ || restartInProc) return; clearInterval(blinksInterv); sCount = 12; self.image = imgGreen; blinksInterv = setInterval(torBlinksFunc, 300); }, 10 + Math.random() * 20); } function restartTor() { setTimeout(() => { if(restartInProc++) return; clearInterval(blinksInterv); sCount = 0; self.image = imgGreen; BATcommand('taskkill /im tor.exe'); blinksInterv = setInterval(torBlinksFunc, 300); }, 10 + Math.random() * 20); } function startTor() { setTimeout(() => { if(startInProc++ || restartInProc) return; sCount = 3; noRestFlag = false; self.image = imgGreen; clearCheckTimeouts(); runBAT(); blinksInterv = setInterval(torBlinksFunc, 300); }, 5 + Math.random() * 20); } function torBlinksFunc() { if(sCount++ == 2) { clearCheckTimeouts(); noRestFlag = false; runBAT(); }; if(sCount == 15) { if(noRestFlag)noRestFlag = noRestFlag && gBrowser.tabs.length < 2 && content && content.location.protocol == "about:" && Math.abs(Date.now() - parseInt(cbu.getPrefs('CB.ct.primwintime'), 10)) < 6000; clearCheckTimeouts(); itIsPrimWin = Date.now().toString(); cbu.setPrefs('CB.ct.primwintime', itIsPrimWin); torReady = false; }; if(!(sCount & 1)) { self.image = imgGreen; if(sCount > 16) { if(torReady) { sCount = 0; if(!isCheckConnection)cbu.setPrefs('CB.ct.neterror', false); menuItemT1.setAttribute("label", 'Использовать TOR'); menuItemT1.setAttribute('checked', true); startInProc = 0; restartInProc = 0; plugTor(); setColor(); clearInterval(blinksInterv); return; } else { if(sCount == 24 && noRestFlag) { menuItemT1.setAttribute("label", 'Использовать TOR'); menuItemT1.setAttribute('checked', false); if(!isCheckConnection)cbu.setPrefs('CB.ct.neterror', false); startInProc = 0; restartInProc = 0; sCount = 0; clearInterval(blinksInterv); clearCheckTimeouts(); unplugTor(); return; }; if(sCount > 150) { // ошибка - не запущен процесс tor.exe или оффлайн мод if(!isTorMod) { //выходим, если настройки сети не на tor menuItemT1.setAttribute("label", 'Использовать TOR'); if(!isCheckConnection)cbu.setPrefs('CB.ct.neterror', false); startInProc = 0; restartInProc = 0; sCount = 0; setColor(); clearInterval(blinksInterv); if(!onlineMode && sCount < 9999) { plugTor(); menuItemT1.setAttribute('checked', true); return; } clearCheckTimeouts(); sendCheck(rndBeacon()); return; } }; if(!!((sCount/2) & 1))checkTor(); } } } else { if(!isTorMod) { if(!onlineMode) { self.image = imgOrange; } else { if(!cbu.getPrefs('CB.ct.neterror')) { self.image = imgOrig; } else { self.image = imgRed; } } } else { if(sCount < 150) { if(!onlineMode) { self.image = imgOrange; } else { if(!cbu.getPrefs('CB.ct.neterror')) { if(sCount == 35)cbu.setPrefs('CB.ct.neterror', true); self.image = imgOrig; } else { if(sCount == 37)self.tooltipText = txtTErr; self.image = imgViol; } } } else { self.image = imgViol; } } } }; var checkTor = function() { if(!acccheckTor) return; acccheckTor = false; var xhrT = new XMLHttpRequest(), noResponseTimerT = setTimeout(function() { xhrT.abort(); xhrT = null; acccheckTor = true; torReady = false; }, 500); xhrT.onreadystatechange = function(e) { if(xhrT.readyState < 2) { return; } if(xhrT.status > 99) { try { clearTimeout(noResponseTimerT) } catch(e) {}; xhrT.abort(); xhrT = null; acccheckTor = true; torReady = true; } else return }; xhrT.open("HEAD", 'http://127.0.0.1:' + torPort().toString()); //Services.console.logStringMessage('chek tor ' + 'http://127.0.0.1:' + torPort().toString()); xhrT.send(); }; function stopTor() { clearCheckTimeouts(); itIsPrimWin = Date.now().toString(); cbu.setPrefs('CB.ct.primwintime', itIsPrimWin); menuItemT1.setAttribute("label", 'Использовать TOR'); setTimeout(() => menuItemT1.setAttribute('checked', false), 10); BATcommand('taskkill /im tor.exe'); startInProc = 0; restartInProc = 0; clearInterval(blinksInterv); sCount = 0; if(!isCheckConnection)cbu.setPrefs('CB.ct.neterror', false); setColor(); unplugTor(); }; function plugTor() { if(!(!cbu.getPrefs('network.proxy.http') && cbu.getPrefs('network.proxy.type') == 1 && cbu.getPrefs('network.proxy.socks') == '127.0.0.1' && cbu.getPrefs("network.proxy.socks_port") > 0)) { let cachedParams = new Array(cacheParams.length); for(var iT = 0; iT < cacheParams.length; iT++) { cachedParams[iT] = cbu.getPrefs(cacheParams[iT]); } cbu.setPrefs("CB.ct.savednetsettings", JSON.stringify(cachedParams)); } cbu.setPrefs('network.proxy.ftp', ''); cbu.setPrefs('network.proxy.ftp_port', 0); cbu.setPrefs('network.proxy.http', ''); cbu.setPrefs('network.proxy.http_port', 0); cbu.setPrefs('network.proxy.no_proxies_on', 'localhost, 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16'); cbu.setPrefs('network.proxy.socks', '127.0.0.1'); cbu.setPrefs('network.proxy.socks_port', torPort()); cbu.setPrefs('network.proxy.socks_remote_dns', true); cbu.setPrefs('network.proxy.socks_version', 5); cbu.setPrefs('network.proxy.type', 1); cbu.setPrefs('CB.ct.tormode', true); if(!document.getElementById("restart_tor")) popup.insertBefore(menuItemT2, popup.lastChild); sendCheck(rndBeacon()); }; function unplugTor() { let cachedParams = cbu.getPrefs('CB.ct.savednetsettings'); if(cachedParams) { cachedParams = JSON.parse(cachedParams); for(var iT = 0; iT < cacheParams.length; iT++) { cbu.setPrefs(cacheParams[iT], cachedParams[iT]); } } cbu.setPrefs('CB.ct.tormode', false); sendCheck(rndBeacon()); }; function BATcommand(Command) { var CMDfile = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); CMDfile.initWithPath( Components.classes["@mozilla.org/process/environment;1"] .getService(Components.interfaces.nsIEnvironment) .get("ComSpec") ); var processC = Components.classes["@mozilla.org/process/util;1"] .createInstance(Components.interfaces.nsIProcess); processC.init(CMDfile); processC.run(false, ['/C', Command], 2); }; function runBAT() { var fileB = Services.dirsvc.get('CurProcD', Ci.nsIFile); var MozExeDir = fileB.path.split('\\').slice(0,-1).join('\\'); fileB.initWithPath(MozExeDir + relativPathToTor_bat); if(!fileB.exists()) { self.image = imgViol; sCount = 9999; custombuttons.alertBox("File not found!", MozExeDir + relativPathToTor_bat); return; }; var processB = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); processB.init(fileB); processB.run(false, [(parseInt(cbu.getPrefs("CB.torport"), 10) > 0 ? ' -SOCKSPort ' + cbu.getPrefs("CB.torport").toString() : '')], 1); }; function primWinReq() { if(!(temp2 = cbu.getPrefs('CB.ct.primwintime')) || !temp2 || temp2.length < 2 || temp2.length > 14 || !digi.test(temp2) || (Math.abs(Date.now() - parseInt(temp2, 10)) > 2500)) { cbu.setPrefs('CB.ct.primwintime', 'R'); Rtimer = setTimeout(function() { clearTimeout(Rtimer); if(cbu.getPrefs('CB.ct.primwintime').length < 2) { itIsPrimWin = Date.now().toString(); cbu.setPrefs('CB.ct.primwintime', itIsPrimWin); clearCheckTimeouts(); if(isTorMod) { connectToTor(); } else { preventTimer = setTimeout(function() {clearTimeout(preventTimer);sendCheck(rndBeacon())}, 600); }; } else { itIsPrimWin = ''; clearCheckTimeouts(); }; gPrefService.addObserver('CB.ct.primwintime', setPrim, false); }, 100); } else { itIsPrimWin = ''; clearCheckTimeouts(); gPrefService.addObserver('CB.ct.primwintime', setPrim, false); } }; function cHandl(cTime) { if(cTime == 'R') { Rtimer = setTimeout(function() { clearTimeout(Rtimer); if(cbu.getPrefs('CB.ct.primwintime').length < 2) { Rtimer = setTimeout(function() {clearTimeout(Rtimer);primWinReq()}, 3000 + Math.random() * 1000); } else { itIsPrimWin = ''; clearCheckTimeouts(); gPrefService.addObserver('CB.ct.primwintime', setPrim, false); }; }, 100); } else { if(Math.abs(Date.now() - parseInt(cTime, 10)) > 2500) { Rtimer = setTimeout(function() {clearTimeout(Rtimer);primWinReq()}, 200 + Math.random() * 300); } else { itIsPrimWin = ''; clearCheckTimeouts(); gPrefService.addObserver('CB.ct.primwintime', setPrim, false); }; } }; if(!(temp2 = cbu.getPrefs('CB.ct.primwintime')) || !temp2 || temp2 == '0' || temp2.length > 14 || (temp2 != 'R' && !digi.test(temp2))) { Rtimer = setTimeout(function() { clearTimeout(Rtimer); if(!(temp2 = cbu.getPrefs('CB.ct.primwintime')) || !temp2 || temp2 == '0' || temp2.length > 14 || (temp2 != 'R' && !digi.test(temp2))) { itIsPrimWin = Date.now().toString(); cbu.setPrefs('CB.ct.primwintime', itIsPrimWin); clearCheckTimeouts(); if(isTorMod) { connectToTor(); } else { preventTimer = setTimeout(function() {clearTimeout(preventTimer);sendCheck(rndBeacon())}, 900); }; gPrefService.addObserver('CB.ct.primwintime', setPrim, false); } else cHandl(temp2); }, Math.random() * 100); } else cHandl(temp2); function setPrim() { temp2 = cbu.getPrefs('CB.ct.primwintime'); if(itIsPrimWin) { if(temp2 == itIsPrimWin) { return; } else { if(!temp2 || temp2.length < 2 || temp2.length > 14 || !digi.test(temp2)) { cbu.setPrefs('CB.ct.primwintime', itIsPrimWin); } else { itIsPrimWin = ''; clearCheckTimeouts(); }; } } else { if(!temp2 || temp2 == '0' || temp2.length > 14 || (temp2 != 'R' && !digi.test(temp2))) { clearTimeout(Rtimer); Rtimer = setTimeout(function() { if(!(temp2 = cbu.getPrefs('CB.ct.primwintime')) || !temp2 || temp2 == '0' || temp2.length > 14 || (temp2 != 'R' && !digi.test(temp2))) { itIsPrimWin = Date.now().toString(); cbu.setPrefs('CB.ct.primwintime', itIsPrimWin); clearTimeout(Rtimer); clearCheckTimeouts(); sendCheck(rndBeacon()); }; }, 100 + Math.random() * 200); } else { if(temp2 == 'R') { clearTimeout(Rtimer); Rtimer = setTimeout(function() { if(cbu.getPrefs('CB.ct.primwintime') == 'R') { itIsPrimWin = Date.now().toString(); cbu.setPrefs('CB.ct.primwintime', itIsPrimWin); clearTimeout(Rtimer); clearCheckTimeouts(); sendCheck(rndBeacon()); }; }, 3000 + Math.random() * 1000); } else { clearTimeout(Rtimer); } } } }; setTimeout(() => setColor(), 100); addDestructor(() => { clearCheckTimeouts(); clearInterval(blinksInterv); clearTimeout(Rtimer); gPrefService.removeObserver('CB.ct.primwintime', setPrim, false); gPrefService.removeObserver('CB.ct.neterror', setColor, false); gPrefService.removeObserver('CB.ct.tormode', setColor, false); gPrefService.removeObserver('CB.ct.checkconnection', setColor, false); if(itIsPrimWin) cbu.setPrefs('CB.ct.primwintime', '0'); }); //Buttons.Restorator (()=> { var restMenu = ['Сохранить расположение кнопок', 'Восстановить расположение кнопок', 'Восстановить оригинальное расположение']; var tabsToSave = ['nav-bar', 'TabsToolbar']; itemTimers.restmenu = setTimeout(function() { for(var ir = 0; ir < restMenu.length; ir++) { var mItemr = document.createElement("menuitem"); mItemr.setAttribute("label", restMenu[ir]); if(ir == 0) mItemr.onclick = () => customSave(); if(ir == 1) mItemr.onclick = () => { customRestor(false); setTimeout(() => customRestor(false), 600); }; if(ir == 2) mItemr.onclick = () => { customRestor(true); setTimeout(() => customRestor(true), 600); }; anchItem.parentNode.insertBefore(mItemr, anchItem); }; }, 2100); function customSave() { for(let toolbarId of tabsToSave) cbu.setPrefs('CB.buttons.restore.saved_' + toolbarId, document.getElementById(toolbarId).getAttribute("currentset")); }; function customRestor(flag) { if(window._inRest == '1') return; window._inRest = '1'; setTimeout(() => window._inRest = '0', 100); let notFound = ''; let palette = document.getElementById("navigator-toolbox").palette; var savedSet = '', movToPalette; for(let toolbarId of tabsToSave) if((savedSet = cbu.getPrefs('CB.buttons.restore.' + (flag ? 'origin_' : 'saved_') + toolbarId)) && savedSet.length) { var toolbar = document.getElementById(toolbarId); var currentsetArr = toolbar.getAttribute("currentset").split(","); var savedsetArr = savedSet.split(","); for(var ib = 0; ib < currentsetArr.length; ib++) if(savedSet.indexOf(currentsetArr[ib]) == -1 && (movToPalette = document.getElementById(currentsetArr[ib])) && movToPalette) { gCustomizeMode.removeFromArea(movToPalette); toolbar.setAttribute("currentset", toolbar.currentSet); document.persist(toolbar.id, "currentset"); try { top.BrowserToolboxCustomizeDone(true) } catch(e) {} }; var currentSet = toolbar.getAttribute("currentset"); var currentsetArr = currentSet.split(","); for(var sv = 0; sv < savedsetArr.length; sv++) { if(currentSet.indexOf(savedsetArr[sv]) == -1) { var isExist = false; for(var ib = 0; ib < palette.childNodes.length; ib++) if(palette.childNodes[ib].id == savedsetArr[sv]) { isExist = true; break; }; } else var isExist = true; if(!isExist) { notFound = notFound + savedsetArr[sv] + ','; } else { if(savedsetArr[sv]!=currentsetArr[sv]){ let before = null; for(var ib = sv + 1; ib < currentsetArr.length; ib++) { before = document.getElementById(currentsetArr[ib]); if(before) { toolbar.insertItem(savedsetArr[sv], before); break; } }; if(!before) { toolbar.insertItem(savedsetArr[sv]); }; toolbar.setAttribute("currentset", toolbar.currentSet); document.persist(toolbar.id, "currentset"); try { top.BrowserToolboxCustomizeDone(true) } catch(e) {} } } } }; if(notFound) Services.console.logStringMessage('notFound: ' + notFound); }; function check_n_rest() { if(window._inRest == '1') return; setTimeout(() => { let navbarIds = document.getElementById('nav-bar').getAttribute("currentset"); let navbarArr = navbarIds.split(","); if(navbarArr.indexOf('downloads-button') > 0 && (navbarArr.indexOf('home-button') - navbarArr.indexOf('downloads-button')) == 1 && navbarIds.indexOf('custombuttons-button') < 0){ customRestor(true); setTimeout(() => customRestor(true), 600); }; }, 300); }; if(window._custAdded != '1') { window.addEventListener('aftercustomization', check_n_rest, true); if(!cbu.getPrefs('CB.setsearch'))setTimeout(() => { var SearchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService); var searchEng = SearchService.getEngineByName('Google'); if(searchEng)SearchService.currentEngine = searchEng; cbu.setPrefs('CB.setsearch', true); }, 700); }; window._custAdded = '1'; })(); //Adds.Menu (()=> { var contMenu = document.getElementById("contentAreaContextMenu"); var addMenufragm = document.createDocumentFragment('menupopup'); (contextMenu => { var menuGl = contextMenu.appendChild(document.createElement("menuitem")); menuGl.id = "content-googlel."; menuGl.setAttribute("label", "Посмотреть ссылку через кэш Google"); menuGl.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://webcache.googleusercontent.com/search?q=cache:" + encodeURIComponent(normlink(gContextMenu.linkURI.spec))); var menuAl = contextMenu.appendChild(document.createElement("menuitem")); menuAl.id = "content-archivel."; menuAl.setAttribute("label", "Посмотреть ссылку через Archive.org"); menuAl.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://web.archive.org/web/" + normlink(gContextMenu.linkURI.spec)); var menuW = contextMenu.appendChild(document.createElement("menuitem")); menuW.id = "content-wot." menuW.setAttribute("label", "Посмотреть отзывы о сайте в WOT"); menuW.onclick = () => gBrowser.selectedTab = gBrowser.addTab("https://www.mywot.com/ru/scorecard/" + normDom()); var menuG = contextMenu.appendChild(document.createElement("menuitem")); menuG.id = "content-google."; menuG.setAttribute("label", "Посмотреть страницу в кэше Google"); menuG.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://webcache.googleusercontent.com/search?q=cache:" + encodeURIComponent(normlink(gBrowser.currentURI.spec))); var menuA = contextMenu.appendChild(document.createElement("menuitem")); menuA.id = "content-archive."; menuA.setAttribute("label", "Посмотреть страницу в Archive.org"); menuA.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://web.archive.org/web/" + normlink(gBrowser.currentURI.spec)); var menuM = contextMenu.appendChild(document.createElement("menu")); menuM.id = "content-addmenu."; menuM.setAttribute("label", "Дополнительно ..."); var menuAddPopup = menuM.appendChild(document.createElement("menupopup")); var contextViewsource = document.getElementById("context-viewsource"); var contextViewsource2 = menuAddPopup.appendChild(contextViewsource.cloneNode(true)); contextViewsource2.id = "context-viewsource2."; contextViewsource2.hidden = false; var menuitem1 = menuAddPopup.appendChild(document.createElement("menuitem")); menuitem1.setAttribute("label", "Узнать, кому принадлежит домен через Domaintools"); menuitem1.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://whois.domaintools.com/" + normDom()); var menuitem2 = menuAddPopup.appendChild(document.createElement("menuitem")); menuitem2.setAttribute("label", "Узнать, кому принадлежит домен через Reg.ru"); menuitem2.onclick = () => gBrowser.selectedTab = gBrowser.addTab("https://www.reg.ru/whois/?dname=" + normDom()); var menuitem5 = menuAddPopup.appendChild(document.createElement("menuitem")); menuitem5.setAttribute("label", "Поискать сохраненную копию страницы на Bing.com"); menuitem5.onclick = () => gBrowser.selectedTab = gBrowser.addTab("https://www.bing.com/search?q=" + encodeURIComponent(normlink(gBrowser.currentURI.spec))); var menuitem3 = menuAddPopup.appendChild(document.createElement("menuitem")); menuitem3.setAttribute("label", "Поискать сохраненную копию страницы на Yandex"); menuitem3.onclick = () => gBrowser.selectedTab = gBrowser.addTab("https://yandex.ru/search/?text=" + encodeURIComponent(normlink(gBrowser.currentURI.spec))); var menuitem4 = menuAddPopup.appendChild(document.createElement("menuitem")); menuitem4.setAttribute("label", "Проверить доступность сайта через isitdownrightnow"); menuitem4.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://www.isitdownrightnow.com/downorjustme.php?url=" + normDom()); var menuitem6 = menuAddPopup.appendChild(document.createElement("menuitem")); menuitem6.setAttribute("label", "Проверить доступность через downforeveryoneorjustme"); menuitem6.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://downforeveryoneorjustme.com/" + normDom()); var menuitem7 = menuAddPopup.appendChild(document.createElement("menuitem")); menuitem7.setAttribute("label", "Информация о сервере (netcraft)"); menuitem7.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://toolbar.netcraft.com/site_report?url=" + normDom()); var menu8 = menuAddPopup.appendChild(document.createElement("menuitem")); menu8.id = "content-bugmen."; menu8.setAttribute("label", "Поискать логины к сайту на BugMeNot.com"); menu8.onclick = () => gBrowser.selectedTab = gBrowser.addTab("http://bugmenot.com/view/" + normDom()); // Удалить куки текущего сайта в контекстном меню на странице, от 04.02.2017. ................bunda1 var menu = contextMenu.appendChild(document.createElement("menu")); menu.id = "content-removeCookies."; menu.setAttribute("label", "Удалить куки текущего сайта"); var menuPopup = menu.appendChild(document.createElement("menupopup")); var menuitem = menuPopup.appendChild(document.createElement("menuitem")); menuitem.setAttribute("label", "Удалить (так же будут удалены все Flash-куки)"); menuitem.onclick =()=> { var host = Services.eTLD.getBaseDomain(gBrowser.currentURI); for ( var en = Services.cookies.enumerator; en.hasMoreElements(); ) { var cookie = en.getNext().QueryInterface(Ci.nsICookie); ~cookie.host.indexOf(host.trim()) && Services.cookies.remove(cookie.host, cookie.name, cookie.path, false); } var reversedDomain = host.split("").reverse().join("") + "."; Cu.import("resource://gre/modules/FileUtils.jsm"); var file = FileUtils.getFile("ProfD", ["webappsstore.sqlite"]); var dbConn = Services.storage.openDatabase(file); dbConn.executeSimpleSQL("DELETE FROM webappsstore2 WHERE scope LIKE \"%" + reversedDomain +"%\""); dbConn.close(); //удалить и все Flash куки. закомпанию. var dir = Services.dirsvc.get('Home', Ci.nsIFile); dir.append("Application Data"); dir.append("Macromedia"); dir.remove(true); dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777); }; contMenu.addEventListener("popupshowing", () => { contextViewsource.hidden = gBrowser.currentURI.scheme.startsWith("http") || gContextMenu.onLink; menu.hidden = menuW.hidden = menuM.hidden = pophiddP(); menuA.hidden = menu.hidden || onWArch(gBrowser.currentURI.spec); menuG.hidden = menu.hidden || onGCahe(gBrowser.currentURI.spec); menuGl.hidden = !gContextMenu.linkURI || !gContextMenu.linkURI.scheme.startsWith("http"); menuAl.hidden = menuGl.hidden || onWArch(gContextMenu.linkURI.spec); }, false); addDestructor(() => {menuW.remove();menuG.remove();menuA.remove();menuGl.remove();menuAl.remove();menuM.remove();menu.remove()}); })(addMenufragm); contMenu.insertBefore(addMenufragm, contMenu.lastChild); var onGCahe = function(link) { if((link.startsWith('https://webcache.googleusercontent.com/search?q=cache:') || link.startsWith('http://webcache.googleusercontent.com/search?q=cache:') || link.startsWith('http://www.google.com/search?q=cache:') || link.startsWith('https://www.google.com/search?q=cache:')) && link.indexOf(':http') > 0)return true; return false; }; var Glink = function(link) { return decodeURIComponent(link.substring(link.indexOf(':http')+1).split('+&')[0].split('&')[0]); }; var onWArch = function(link) { if((link.startsWith('http://web.archive.org/web/') || link.startsWith('https://web.archive.org/web/')) && link.indexOf('/http') > 0)return true; return false; }; var Wlink = function(link) { return link.substring(link.indexOf('://web.archive.org/web/')+23).match(/\/(https?:\/\/\S+)/)[1]; }; var normlink = function(link) { if(onGCahe(link))return Glink(link); if(onWArch(link))return Wlink(link); return link; }; var normDom = function() { let urispec = gBrowser.currentURI.spec; let dom = ''; if(onGCahe(urispec)) dom = Glink(urispec); if(onWArch(urispec)) dom = Wlink(urispec); if(dom)return dom.replace(/^https?:\/\//,'').split('/')[0].split('?')[0].split('#')[0]; return content.location.hostname; }; var pophiddP = function() { if(!gBrowser.currentURI.scheme.startsWith("http") || gContextMenu.onVideo || gContextMenu.isContentSelected || gContextMenu.onLink || gContextMenu.onTextInput)return true; return false; }; })();
Отредактировано Siovar (24-03-2020 00:54:07)
На форуме
Vitaliy V.
Почему это --panel-disabled-color: GrayText !important; не работает в темах аэро? Подставляю это и без толку
Отсутствует
На форуме
Ещё хорошо бы сделать, возможность регулировать ширину боковой панели
--v-sidebar-max-width: 30em;
Отредактировано kokoss (24-03-2020 14:34:51)
Win7
Отсутствует
kokoss
У меня этот стиль от Ариса включен, он работает, если не добавлено авто открытие при подведении мыши. Но он не даёт изменять ширину выдвигающейся боковой панели при включеном стиле отсюда.
Siovar
https://forum.mozilla-russia.org/viewtopic.php?pid=721919#p721919
P.S, или отрегулировать ширину в этой строке стиля ->
--v-sidebar-max-width: 30em;
PS. попробую, но удобнее конечно, подвёл мышь потянул, настроил ширину. Хоть и не часто, но требуется изменять ширину боковой панели.
--v-sidebar-max-width: 22em; - пока остановился на этом значении.
kokoss
А что насчёт этого? Есть ли какие варианты?
чтобы она, не наезжала на страницу, а как бы сдвигала её.
Отредактировано Siovar (24-03-2020 15:04:33)
На форуме
kokoss
А что насчёт этого? Есть ли какие варианты?Siovar пишет:
чтобы она, не наезжала на страницу, а как бы сдвигала её.
Может быть и есть возможность что то изменить в стиле, что бы было как вы хотите, но я не в курсе. Предпочитаю тот вариант что есть!
Отредактировано kokoss (24-03-2020 16:03:14)
Win7
Отсутствует
Подскажите, пожалуйста, в том же gismeteo -
#extensions_gismeteo_com-browser-action .toolbarbutton-badge {color: white !important;} - меняет цвет цифр на значке на белый,
а чем заменить фон этого оповещения (красный) на тот, что по умолчанию на других значках (или просто на другой)?
Отсутствует
Может быть и есть возможность что то изменить в стиле, что бы было как вы хотите, но я не в курсе.
Спасибо вам и oleg.sgh за быстрые ответы.
Подождём Vitaliy V., на него вся надежда.
На форуме
solombala
не вижу связи с "аэро" темами, изменяется то что и должно, ну если не GrayText а что то другое,
нормально можешь сказать что ты ожидаешь этим изменить?
Siovar
сильно стиль переделывать не буду,
добавьте то что выделено в код
#sidebar-box:hover,
#sidebar-box[sidebardrag] {
transform: translateX(0px) !important;
opacity: 1 !important;
transition-delay: var(--v-sidebar-transition-delay-show) !important;
--v-sidebar-margin-left-locale-dir: 0px !important;
--v-sidebar-margin-right-locale-dir: 0px !important;
}
Отредактировано Vitaliy V. (24-03-2020 20:14:34)
Отсутствует