Приветствую. Можно кнопку Red Links https://forum.mozilla-russia.org/viewto … 26#p544526 адаптировать под FF 100?
Отсутствует
Dumby
Подскажите пожалуйста, что в коде не так? На FF108 W10 не работает, хотя на W8.1 работал? Даже ОС может влиять на функции браузера? Та же портабельная сборка от PortableApps.
addEventListener("contextmenu", { handleEvent(e) { if (e.detail != 2 || !gContextMenu?.onImage) return; var pl = "browser.download.folderList"; var pu = "browser.download.useDownloadDir"; var cl = Services.prefs.getIntPref(pl), sl = cl == 2; var cu = Services.prefs.getBoolPref(pu); sl || Services.prefs.setIntPref(pl, 2); cu || Services.prefs.setBoolPref(pu, true); try { this.save(); e.preventDefault(); this.hide(); } finally { sl || Services.prefs.setIntPref(pl, cl); cu || Services.prefs.setBoolPref(pu, cu); } }, get hide() { delete this.hide; var popup = document.getElementById("contentAreaContextMenu"); return this.hide = popup.hidePopup.bind(popup); }, get save() { var func = eval(`(function ${gContextMenu.saveMedia})`.replace( /^( )(?:false, \/\/ don't)( skip prompt for where to save)/m, "$1true, //$2" )); delete this.save; return this.save = () => func.call(gContextMenu); } }, false, gBrowser.tabpanels || 1);
Отсутствует
Кнопка "Отображать картинки" в FF100 работает, но кривовато (иконка не меняет вид при переключении).
this._handleClick =()=> BrowserReload( custombuttons.setPrefs(s, custombuttons.getPrefs(s) == 1 ? 2 : 1) ); var s = 'permissions.default.image'; function toggleImage() { var icon = self.ownerDocument.getAnonymousElementByAttribute(self, "class", "toolbarbutton-icon"); icon.src = custombuttons.getPrefs(s) == 1 ? self.image : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC'; }; toggleImage(); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage) );
Отредактировано manuk (25-07-2023 16:52:17)
Отсутствует
Это окно виндовское никак не раскрасить ?(w10)
@-moz-document url(chrome://global/content/commonDialog.xhtml) {
:root {
background-color: salmon !important;
}
}
Или о чём речь?
Можно кнопку Red Links https://forum.mozilla-russia.org/viewto … 26#p544526 адаптировать под FF 100?
Теоретически, не исключено. Но, казалось бы, все уже давно усвоили,
что «Links» в другом процессе, а с этим душниловом никто связываться не будет,
поэтому таких вопросов больше не задают.
Все, да, видимо, не все.
На FF108 W10 не работает
Ух ты, я вижу это!
Можно попробовать перенести обработчик в окно
Отсутствует
manuk как вариант
var button = this; const imgFalse="data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAASw8NZZYdGuubHhv/mh4b/poeG/+aHhv/mh4b/5oeG/+aHhv/mh4b/5oeG/+aHhv/mh4b/pseG/+WHRrrSw8NZQAAAABODw1oqSEd/58fG/6eHxv/nh8b/54fG/+eHxv/nh8b/54fG/+dHxv/nh8b/54fG/+eHxv/nh8b/54fG/+fHxv+qSEd/04PDWeeHhvjpB8c/6EfHP2iHxz/oh8c/6IfHP+iHxv/oh8b/6UgHf+lIB3/ox8c/6IfG/+iHxz/oh8c/6IfHP+hHxz9pB8c/54eG+OnIBz9ph8c/6cfHP+nHxz/px8c/6YfHP+pIB3/qSMg/50dGv+cHBn/pyIf/6ohHf+mHxz/px8c/6cfHP+nHxz/ph8c/6cgHP2rIBz+qyAc/6sgHP+rIBz/qiAc/68iHv+iHhr/cwMC/2sCAv9rAwP/bQEA/5obGP+vIh7/qiAc/6sgHP+rIBz/qyAc/6sgHP6vIBz/ryAc/68gHP+uIBz/syId/50bGP9pAAD/oGFg/+LMzP/kz8//p2xr/2gBAP+hHBn/tCMe/64gHP+vIBz/ryAc/68gHP+zIRz/syEc/7IhHP+1Ih3/qR8b/2cAAP+yfn3///////v8/P/7+/v//////7uMjP9rAAD/rB8a/7YjHf+yIRz/syEc/7MhHP+4IR3/uCEd/7chHf+/JiL/hwYE/51fX///////9fLy/6xPTf+iQ0L/7+np//////+2h4f/dwQD/7YiHv+3IR3/uCEd/7ghHf+8Ih3/vCId/7siHf/BJSD/hAkH/9jBwf//////mUlI/5MHA/9rAAD/iDc2/+/j4///////oWVk/6MPCv/IKiX/uiId/7wiHf/AIh3/wCId/78iHf/HJSD/lA4L/9XBwf//////kkRD/14AAP+8j47/3sXF/5xVVf/Ts7L/izc3/3kAAP+cEA3/xSQe/8AjHv/GIh3/xiId/8YiHf/JJiH/uBIO/6xkY///////+PHx/4w6Of/Ts7L//////+bT0/91Ghn/awsK/9nBwf+0ior/nAoG/84lIP/LIx3/yyMd/8sjHf/KIx3/0SYg/7IQC/+zfX3///////Pq6f+bVFP/38nJ///////p2dn/jTw7/+3e3v//////uomJ/6kMB//QIx3/0CMd/9AjHf/QIx3/zyMd/9gnIf+mCQX/q3l5///////QsLD/cQ4N/+LNzf//////487O/55XVv/y6Of//////8WVlP/VIx3+1SMd/9UjHf/VIx3/1SMd/9QkHf/bJh//qw4J/7xkYv+MNTT/bQYF/4o2Nv/dxMT//////658fP+CKir/+PLy//////7cIxz92iMc/9sjHP/bIxz/2yMc/9sjHP/ZIxz/5igg/8ETDv9gAAD/2r29//fy8f+aU1L/t3x8/7w7N/9mAAD/rHp6//////3aIhvj4SQc/98jHP3gIxz/4CMc/+AjHP/gIxz/3yMc/+EoIf+EBwX/rX5+///////u6un/njU0/4IAAP95ISD96tnZ//T39+NxEg5o9yce/+ckHP7kJBz/5SQc/+UkHP/lJBz/5CQc/+klHf/dIxz/cgAA/616ev//////8+3u/69/f//l09P+/////318fGcBAAAAcRINZeQjG+vsJBz/6iQc/uskHP/rJBz/6yQc/+kkHP/yJh7/0iEb/2cAAP+3hIT//////v/////39/fre3p6ZQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; const imgTrue = "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw1LZR0aluseG5v/Hhua/h4bmv8eG5r/Hhua/x4bmv8eG5r/Hhua/x4bmv8eG5r/Hhua/h4bm/8dGpbrDw1LZQAAAAAPDU5oIR2p/x8bn/4fG57/Hxue/x8bnv8fG57/Hxue/x8bnv8fG53/Hxue/x8bnv8fG57/Hxue/x8bnv8fG5/+IR2p/w8NTmceG57jHxyk/x8cof0fHKL/Hxyi/x8cov8fG6L/Hxui/yAdpf8gHaX/Hxyj/x8bov8fHKL/Hxyi/x8cov8fHKH9Hxyk/x4bnuMgHKf9Hxym/x8cp/8fHKf/Hxyn/x8cpv8gHan/IyCp/x0anf8cGZz/Ih+n/yEdqv8fHKb/Hxyn/x8cp/8fHKf/Hxym/yAcp/0gHKv+IByr/yAcq/8gHKv/IByq/yIer/8eGqL/AwJz/wICa/8DA2v/AQBt/xsYmv8iHq//IByq/yAcq/8gHKv/IByr/yAcq/4gHK//IByv/yAcr/8gHK7/Ih2z/xsYnf8AAGn/YWCg/8zM4v/Pz+T/bGun/wEAaP8cGaH/Ix60/yAcrv8gHK//IByv/yAcr/8hHLP/IRyz/yEcsv8iHbX/Hxup/wAAZ/9+fbL///////z8+//7+/v//////4yMu/8AAGv/Hxqs/yMdtv8hHLL/IRyz/yEcs/8hHbj/IR24/yEdt/8mIr//BgSH/19fnf//////8vL1/09NrP9DQqL/6env//////+Hh7b/BAN3/yIetv8hHbf/IR24/yEduP8iHbz/Ih28/yIdu/8lIMH/CQeE/8HB2P//////SUiZ/wcDk/8AAGv/NzaI/+Pj7///////ZWSh/w8Ko/8qJcj/Ih26/yIdvP8iHcD/Ih3A/yIdv/8lIMf/DguU/8HB1f//////REOS/wAAXv+Pjrz/xcXe/1VVnP+zstP/NzeL/wAAef8QDZz/JB7F/yMewP8iHcb/Ih3G/yIdxv8mIcn/Eg64/2RjrP//////8fH4/zo5jP+zstP//////9PT5v8aGXX/Cwpr/8HB2f+KirT/Cgac/yUgzv8jHcv/Ix3L/yMdy/8jHcr/JiDR/xALsv99fbP//////+rp8/9UU5v/ycnf///////Z2en/PDuN/97e7f//////iYm6/wwHqf8jHdD/Ix3Q/yMd0P8jHdD/Ix3P/ych2P8JBab/eXmr//////+wsND/Dg1x/83N4v//////zs7j/1dWnv/o5/L//////5WUxf8jHdX+Ix3V/yMd1f8jHdX/Ix3V/yQd1P8mH9v/Dgmr/2RivP81NIz/BgVt/zY2iv/ExN3//////3x8rv8qKoL/8vL4//////4jHNz9Ixza/yMc2/8jHNv/Ixzb/yMc2/8jHNn/KCDm/xMOwf8AAGD/vb3a//Lx9/9TUpr/fHy3/zs3vP8AAGb/enqs//////0iG9rjJBzh/yMc3/0jHOD/Ixzg/yMc4P8jHOD/Ixzf/ygh4f8HBYT/fn6t///////q6e7/NTSe/wAAgv8hIHn92dnq//f39OMSDnFoJx73/yQc5/4kHOT/JBzl/yQc5f8kHOX/JBzk/yUd6f8jHN3/AABy/3p6rf//////7e7z/39/r//T0+X+/////3x8fWcAAAEAEg1xZSMb5OskHOz/JBzq/iQc6/8kHOv/JBzr/yQc6f8mHvL/IRvS/wAAZ/+EhLf//////v/////39/frenp7ZQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; this.onclick = function(event) { if(event.button == 0) { gBrowser.fixupAndLoadURIString(`javascript:(function(){var i,x; for (i=0;x=document.links[i];++i)x.style.color=["red","blue","green"][sim(x,location)]; function sim(a,b) { if (a.hostname!=b.hostname) return 0; if (fixPath(a.pathname)!=fixPath(b.pathname) || a.search!=b.search) return 1; return 2; } function fixPath(p){ p = (p.charAt(0)=="/" ? "" : "/") + p; } })()`, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()}); button.image = imgTrue; } else if(event.button == 1) { gBrowser.fixupAndLoadURIString(`javascript:(function(){var i,x; for (i=0;x=document.links[i];++i)x.style.color=["","",""][sim(x,location)]; function sim(a,b) { if (a.hostname!=b.hostname) return 0; if (fixPath(a.pathname)!=fixPath(b.pathname) || a.search!=b.search) return 1; return 2; } function fixPath(p){ p = (p.charAt(0)=="/" ? "" : "/") + p } })()`, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()}); button.image = imgFalse; } }; this.tooltipText="ЛКМ - Подсветить ссылки:\n красный - внешние сайты\n голубой - внутри сайта\n зеленый - внутри страницы\nСКМ - Вернуть исходный вид\nПКМ - Меню кнопки";
Отсутствует
Ух ты, я вижу это!
Можно попробовать перенести обработчик в окно
Спасибо огромное!
manuk
Попробуйте эту кнопку от Dumby, очень удобно.
addEventListener("contextmenu", { handleEvent(e) { if (e.detail != 2 || !gContextMenu?.onImage) return; var pl = "browser.download.folderList"; var pu = "browser.download.useDownloadDir"; var cl = Services.prefs.getIntPref(pl), sl = cl == 2; var cu = Services.prefs.getBoolPref(pu); sl || Services.prefs.setIntPref(pl, 2); cu || Services.prefs.setBoolPref(pu, true); try { this.save(); e.preventDefault(); this.hide(); } finally { sl || Services.prefs.setIntPref(pl, cl); cu || Services.prefs.setBoolPref(pu, cu); } }, get hide() { delete this.hide; var popup = document.getElementById("contentAreaContextMenu"); return this.hide = popup.hidePopup.bind(popup); }, get save() { var func = eval(`(function ${gContextMenu.saveMedia})`.replace( /^( )(?:false, \/\/ don't)( skip prompt for where to save)/m, "$1true, //$2" )); delete this.save; return this.save = () => func.call(gContextMenu); } //}, false, gBrowser.tabpanels || 1); });
b0ttle
Сохранение изображения по двойному ПКМ на нём без запроса.
Отсутствует
мне не сохранять картинки нужно, а кнопкой отключать-включать их показ на страницах сайтов. (permissions.default.image)
Когда-то делал себе на FF91, но потом за невостребованностью удалил.
Попробуйте, может будет работать на FF100.
/*Initialization Code*/ self.image = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAB4SURBVHjaYvz//z8DDChknUFwcIAH00wYkfmM6AasnWaCVWNw1hmshrBgU7z2yg+shoAMBxkEsghmCBMDiQDmQph3WUjRjOwNvF7ABqKydBAG6XDADSPZC+iALAN+/qbQAIpdMGoAEQkJlFAIRR9OA7AlV3wAIMAAiooo6Ya47z0AAAAASUVORK5CYII="; // Настройка функций кликов мыши для кнопки ..... this.onmousedown =e=> { this.onmouseup =e=> { // левый клик if (e.button) return; switch(cbu.getPrefs("permissions.default.image")) { case 0: var data = 1; break; case 1: var data = 2; break; default: var data = 1; } cbu.setPrefs("permissions.default.image", data); } this.onclick =e=> { // правый клик if (e.button == 2) gShowPopup(this); } } self.onclick =e=> e.preventDefault(); // Подсказка для кнопки ..... this.onmouseover =()=> { if (cbu.getPrefs("permissions.default.image") == 1) { statusPrefs = "Показ включен"; } else { statusPrefs = "Показ выключен"; } this.tooltipText = "Вкл/Откл показ картинок на страницах сайтов \nЛКМ: Вкл/Откл картинки \nПКМ: CB меню \n----------------------------------------------\nТекущее состояние: " + statusPrefs; } // Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ..... var s = "permissions.default.image"; function toggleImage() { var icon = self.getElementsByClassName("toolbarbutton-icon")[0]; switch( cbu.getPrefs(s)) { case 1: icon.src = self.image; break; case 2: icon.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAB1SURBVHjaYvz//z8DDJSVlSE4OEBXVxcjMp8FXUFBQQFWjRMmTIBbgmwIEzbFly9fxsDIhiO7lImBRIBuCAspmmHewBsGuICzszOcraurCzeMZC+gA7IM+Pv3L2UGUOyCUQOISEighEIo+nAagC254gMAAQYARzQuu5rDO0MAAAAASUVORK5CYII='; break; default:icon.src = self.image; } } toggleImage(); var gPrefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); gPrefService.addObserver(s, toggleImage, false); addDestructor(()=> gPrefService.removeObserver(s, toggleImage));
«The Truth Is Out There»
Отсутствует
manuk все работает перезагрузи браузер
Отсутствует
manuk посмотри пост https://forum.mozilla-russia.org/viewtopic.php?pid=804278#p804278 и все поймешь и на сотке заработает. На старших версиях - заменить loadURI на fixupAndLoadURIString, а ты обратно поменяй местами
Отсутствует
Andrey_Krropotkin, понял. Заменил. Работает. Спасибо большое! А можно сделать, чтобы все страницы сразу грузились с настроенными цветами без клика по кнопке?
Отредактировано manuk (25-07-2023 23:52:07)
Отсутствует
manuk нет, каждая вкладка отдельный процесс
Отсутствует
заменить loadURI на fixupAndLoadURIString
Это везде или только для данного скрипта? Просто нашел у себя в одном скрипте, но разницы не вижу, возможно неиспользуемый мной функционал.
иначе не работало
ОК, посмотрю.
Отредактировано _zt (27-07-2023 01:56:10)
Отсутствует
_zt я везде заменял, иначе не работало
Отсутствует
Dumby
@-moz-document url(chrome://global/content/commonDialog.xhtml) {
:root {
background-color: salmon !important;
}
}
Не того...Display: none -реагирует , на окрас - нет. Заголовок окна,имею ввиду.
Отсутствует
Отсутствует
Пожалуйста, помогите мне с решением.
Я хочу заменить mainWindow.gBrowser.addTab("https://vk.com/") на element.click().
То что у меня есть сейчас (когда выполняю в window.console.log ниже строку из кода, то получаю [object XULElement]):
mainWindow.gBrowser.addTab("https://vk.com/")
А мне нужно что-то вроде (см. ниже, знаю что неверно, но суть понятна)... перейти по ссылке со стороннего сайта, на сайт вк через клик, но чтобы функционал соответствовал mainWindow.gBrowser.addTab("https://vk.com/"), то есть я получал в window.console.log ответ в виде [object XULElement].
window.document.querySelector('селектор').click()
Отредактировано Deriax (02-08-2023 22:52:03)
Отсутствует
Перешел на 116, в кнопке
/*Initialization Code*/ ({ title: "Консоль браузера", url: "chrome://devtools/content/webconsole/index.html", icon: "chrome://devtools/skin/images/tool-webconsole.svg", init() { var trg = document.getElementById("browser"); trg && addEventListener("DOMContentLoaded", this, false, trg); var id = "viewBrowserConsoleSidebar"; var menuitem = this.element("menuitem", { type: "checkbox", label: this.title, id: "menu_browserConsoleSidebar", oncommand: `SidebarUI.toggle("${id}");` }, document.getElementById("viewSidebarMenu")); var btn = this.element("toolbarbutton", { type: "checkbox", label: this.title, id: "sidebar-switcher-browserConsole", oncommand: `SidebarUI.show("${id}");`, class: "subviewbutton subviewbutton-iconic" }); document.querySelector( 'toolbarbutton[id^="sidebar-switcher-"] + toolbarseparator' ).before(btn); SidebarUI.sidebars.set(id, { url: this.url, buttonId: btn.id, title: this.title, menuId: menuitem.id }); SidebarUI.isOpen && SidebarUI.currentID == id && SidebarUI.selectMenuItem(id); var popupset = this.popupset = this.element("popupset", { id: `CB${_id.slice(20)}-browserConsole-popupset` }, document.documentElement); var css = `\ #${btn.id} > .toolbarbutton-icon, #sidebar-box[sidebarcommand="${id}"] > #sidebar-header > #sidebar-switcher-target > #sidebar-icon { list-style-image: url(${this.icon}); }`; var str = (cbu.cb || "") + "data:text/css," + encodeURIComponent(css), type = windowUtils.USER_SHEET; windowUtils.loadSheetUsingURIString(str, type); addDestructor(() => { SidebarUI.sidebars.delete(id); btn.remove(); menuitem.remove(); popupset.remove(); windowUtils.removeSheetUsingURIString(str, type); }); parseInt(Services.appinfo.platformVersion) < 73 && "insertFTLIfNeeded" in MozXULElement && MozXULElement.insertFTLIfNeeded("toolkit/main-window/editmenu.ftl"); self.onclick = e => { if (e.button == 2) return; if (!e.button && !e.shiftKey) return SidebarUI.toggle(id); var st = gBrowser.selectedTab, tab; if (!e.ctrlKey) tab = gBrowser.visibleTabs.find(tab => { var br = gBrowser.getBrowserForTab(tab); return br.currentURI.spec == this.url || ( "_cachedCurrentURI" in br && br._cachedCurrentURI.spec == this.url ) }); if (tab == st) return; if (!tab) tab = gBrowser.addTrustedTab(this.url); gBrowser.moveTabTo(tab, st._tPos + 1); gBrowser.selectedTab = tab; } for(var br of gBrowser.browsers) { if (br.currentURI.spec != this.url) continue; var doc = br.contentDocument; if (doc && ( doc.readyState == "complete" || doc.readyState == "interactive" )) doc.querySelector( "main#app-wrapper,div#output-container" ).childElementCount ? this.defineDocPopupset(doc) : this.handleEvent({target: doc}); } if (!btn.hasAttribute("checked")) return; var doc = SidebarUI.browser.contentDocument; if (doc.documentURI != this.url) btn.doCommand(); else if (doc.readyState == "complete") this.defineDocPopupset(doc); }, defineDocPopupset(doc) { this.definePopupset( doc.querySelector("popupset") || doc.documentElement.appendChild(doc.createXULElement("popupset")) ); }, get definePopupset() { var append = customElements.get("menuitem") ? popup => { this.popupset.appendChild(popup); popup.setAttribute("oncommand", "event.target.cmd()"); for(var node of [...popup.querySelectorAll("menuitem")]) { var menuitem = document.importNode(node, true); menuitem.cmd = Services.els.getListenerInfoFor(node) .find(inf => inf.type == "command").listenerObject; popup.replaceChild(menuitem, node); } return popup; } : this.popupset.appendChild.bind(this.popupset); delete this.definePopupset; return this.definePopupset = popupset => popupset.appendChild = append; }, lss: Services.scriptloader.loadSubScript, async handleEvent({target: doc}) { if (!doc || doc.documentURI != this.url) return; var win = doc.defaultView; if ( win.docShell.name == "toolbox-panel-iframe-webconsole" || doc.DOMContentLoadedEventHandled ) return; doc.DOMContentLoadedEventHandled = true; "custombuttonsConsole" in win || this.lss( "chrome://custombuttons/content/consoleOverlay.js", win ); var cw = win.isChromeWindow, bc; if (!cw) { if (doc.visibilityState == "hidden") { var {focus} = win; win.focus = () => win.focus = focus; } doc.title = this.title; var link = doc.createElement("link"); link.setAttribute("rel", "shortcut icon"); link.setAttribute("href", this.icon); doc.head.prepend(link); var br = win.docShell.chromeEventHandler; var cmAttr = br.getAttribute("contextmenu"); cmAttr && br.removeAttribute("contextmenu"); win.onbeforeunload = () => { if (bc) bc.chromeWindow = {close() {}}; cmAttr && br.setAttribute("contextmenu", cmAttr); } } bc = await this.console(win); }, get console() { // Bug 1579090 - WebConsole should handle ObjectFront when needed (for non-primitive Console API args + Evaluation results) (Firefox 73+) https://bugzilla.mozilla.org/show_bug.cgi?id=1579090 var vers = parseInt(Services.appinfo.platformVersion); this.bug1579090 = vers > 73 || (vers == 73 && !( "_setCurrentURI" in gBrowser.selectedBrowser // https://bugzil.la/1431214 )); delete this.console; return this.console = this.bug1579090 ? async win => { //await this.loader.bcm._browserConsoleInitializing; var key = "CBBrowserConsolePromise", {wins} = this.loader; win[key] = win.Object.create(null); win[key].promise = new win.Promise(resolve => win[key].resolve = resolve); win[key].destroy = () => { win[key].resolve(); delete win[key]; wins.splice(wins.indexOf(win), 1); } wins.unshift(win); wins.length > 1 && await wins[1][key].promise; var bc = await new this.loader.console(win).toggleBrowserConsole(); win[key].destroy(); return bc; } : async win => { this.loader.Services.ww.wins.push(win); return await new this.loader.HUDService().toggleBrowserConsole(); } }, get loader() { delete this.loader; // var url = "resource://devtools/shared/Loader.jsm"; var url, pver = parseInt(Services.appinfo.platformVersion); if (pver < 98) url = "resource://devtools/shared/Loader.jsm"; else url= "resource://devtools/shared/loader/Loader.jsm"; if (this.bug1579090) { var g = Cu.import(url, {}), key = "CBBrowserConsoleLoader"; addDestructor(reason => reason[5] == e && key in g && g[key].destroy()); if (key in g) return this.loader = g[key]; var {BrowserConsoleManager} = g.require( "devtools/client/webconsole/browser-console-manager" ); return this.loader = g[key] = { wins: [], bcm: BrowserConsoleManager, console: class extends BrowserConsoleManager.constructor { constructor(win) { super(); this.win = win; } openWindow() { var {win} = this; win.addEventListener("unload", () => { win.CBBrowserConsolePromise && win.CBBrowserConsolePromise.destroy(); this.closeBrowserConsole.call(this); }, {once: true}); delete this.win; return win; } }, destroy() { this.wins = null; delete g[key]; } }; } var id = _id + "-browser-console"; url += "?" + id; var loader = {exports: {}}, nsvo = Cu.import(url, loader); addDestructor(reason => reason[5] == "e" && Cu.unload(url)); if (id in nsvo) return this.loader = nsvo[id]; var dir = "resource://devtools/client/webconsole/"; try { this.lss(dir + "hudservice.js", loader); } catch(ex) { // Bug 1570320 - Rename hudservice.js into browser-console-manager.js (Firefox 70+) // https://bugzilla.mozilla.org/show_bug.cgi?id=1570320 this.lss(dir + "browser-console-manager.js", loader); this.lss("data:,this.HUDService=BrowserConsoleManager", loader); } var e = new CustomEvent("DOMContentLoaded", {bubbles: false}), ww = loader.Services.ww; loader.Services.ww = Cu.getGlobalForObject(nsvo).Object.create(ww, { wins: {value: []}, openWindow: {value: function() { var win = this.wins.shift(); win.setTimeout(() => win.dispatchEvent(e), 0); return win; }} }); return this.loader = nsvo[id] = loader; }, element(name, attrs, parent) { var node = document.createXULElement(name); for(var attr in attrs) node.setAttribute(attr, attrs[attr]); parent && parent.append(node); return node; } }).init(); this.tooltipText = "Консоль браузера" +"\n"+"\n"+ "ЛКМ: В боковой панели" +"\n"+ "СКМ: В новой вкладке" +"\n"+ "ПКМ: Стандартное меню "
Отредактировано Andrey_Krropotkin (03-08-2023 07:51:19)
Отсутствует
Andrey_Krropotkin
а если так...
/* document.querySelector( 'toolbarbutton[id^="sidebar-switcher-"] + toolbarseparator' ).before(btn); */ document.querySelector( parseInt(Services.appinfo.platformVersion) >= 116 ? 'menuitem[id^="sidebar-switcher-"] + menuseparator' : 'toolbarbutton[id^="sidebar-switcher-"] + toolbarseparator' ).before(btn);
Отредактировано Farby (03-08-2023 10:06:47)
Жизнь иногда такое выкидывает, что хочется подобрать...
На форуме
Farby так все работает спасибо
Отсутствует