_zt
sandro79
Попробуйте так в custom_script_all_win.js или custom_script_win.js (если в окне библиотеки не требуется)
(() => { var load_scripts_by_url = { "chrome://browser/content/browser.xhtml": (win) => { var box; if (win != window || !(box = document.querySelector("#sidebar-box"))) return; var listener = e => { var doc = e.target || ({}); load_scripts_by_url[doc.documentURI]?.(doc.defaultView); }; box.addEventListener("pageshow", listener); this.wheretoopenlinkmod = { destructor: function() { box.removeEventListener("pageshow", listener); } }; this.unloadlisteners.push("wheretoopenlinkmod"); window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let node; if (gBrowser.selectedTab.isEmpty || !((node = arguments[0].composedTarget) && node.closest("#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks,#goPopup,#PanelUI-history,.search-go-button")) || (node._placesNode && node._placesNode.uri.startsWith("javascript"))) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/places.xhtml": (win) => { win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { if (window.opener && window.opener.gBrowser.selectedTab.isEmpty) return "current"; let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/bookmarksSidebar.xhtml": (win) => { win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { if ((window._ucf_top || (window._ucf_top = Services.wm.getMostRecentWindow("navigator:browser"))).gBrowser.selectedTab.isEmpty) return "current"; let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/historySidebar.xhtml": (win) => { win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { if ((window._ucf_top || (window._ucf_top = Services.wm.getMostRecentWindow("navigator:browser"))).gBrowser.selectedTab.isEmpty) return "current"; let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, }; load_scripts_by_url[location.href]?.(window); })();
но неопределяемые html элементы было достаточно отделять ">" или "> stack >". Это до сих пор работает для старых расширений (у меня точно работает на старом счётчике табов)
Это вы путаете с анонимным контентом XBL, а html элементы были и раньше в интерфейсе хоть и немного.
Короче говоря, как теперь корректней оформить usercrome? Универсальное решение на будущее? (Сколько там ещё продержится зул и поддержка кастомных стилей.)
Оформляйте как вам удобней, полагаю удобней для вас будет вообще без пространства имен,
это не так уж и важно на самом деле есть в userChrome.css пространства имен или нет.
Этот вопрос не ко мне, разработчики сами то знают что будет дальше с ?!
Отредактировано Vitaliy V. (07-09-2020 12:15:19)
Отсутствует
Помогите пожалуйста заменить в панели меню цвет полосы выделения на #00299E и цвет шрифта под этой полосой выделения на белый.
Это касается всех меню и подменю(где есть) в панели меню. (Файл, Правка, Вид, Журнал, Закладки, Инструменты, Справка).
Отсутствует
Vitaliy V
вообще без пространства имен
Спасибо. Вы по-русски подтвердили рекомендации userchrome.org В прошлогодней статье о стандарте они предлагают вообще не указывать пространство имен ("omit all mention of namespaces"), но при появлении проблем ограничивать блоки правилом @-moz-document.
Я тогда удивился, но ваш стиль для тулбаров - целиком из этих блоков - прояснил.
разработчики сами то знают что будет дальше с ?!
Отсутствует
kokoss
Поясните там http://forum.ru-board.com/topic.cgi?for … rt=3260#21
что перенос вправо работает только когда боковая панель слева, если нужно в любом случае сделать поиск
справа тогда требуется из стиля удалить правила содержащие #sidebar-box[positionend="true"]
Отсутствует
Попробуйте так в custom_script_all_win.js или custom_script_win.js (если в окне библиотеки не требуется)
Благодарю! Да, работает, но только в боковой панели и в библиотеке. Ещё бы добавить по ссылкам из журнала в панели меню "Журнал" и из значка журнала, добавленного на панель меню из хранилища - вообще бы идеально было. Открываю из трёх точек, по ситуации. Может отдельным скриптом, если не сильно много мороки. И вообще хорошо бы из строки поиска по нажатию на стрелку, ну этот баг поправить.
Помогите пожалуйста заменить в панели меню цвет полосы выделения на #00299E и цвет шрифта под этой полосой выделения на белый.
Это касается всех меню и подменю(где есть) в панели меню. (Файл, Правка, Вид, Журнал, Закладки, Инструменты, Справка).
Кое-что вроде есть, взято с правкой отсюда.
#main-menubar > menu:-moz-any(:hover,[open],[_moz-menuactive]) { background: #00299E !important; color: White !important; }
Отсутствует
И вообще хорошо бы из строки поиска по нажатию на стрелку, ну этот баг поправить.
а это я добавлял, вы что этот код не заметили window.whereToOpenLink = eval(...); для "chrome://browser/content/browser.xhtml" ?
чтобы добавить что-то ещё меняем
matches(".search-go-button")
на
closest("#goPopup,#PanelUI-history,.search-go-button")
можете сюда добавить ещё селекторов через запятую, которые можно позаимствовать из вашего скрипта там где switch (node.id) {... только в css с добавлением #
Отсутствует
а это я добавлял, вы что этот код не заметили window.whereToOpenLink = eval(...); для "chrome://browser/content/browser.xhtml" ?
Заметил, но не допонял. Заменил я для начала matches(".search-go-button") на closest("#goPopup,#PanelUI-history,.search-go-button"), не знаю, ничего не поменялось. startupCache чистил вручную. Подключал к custom_script_win.js импортом, так сказать, потом вниз custom_script_win.js, всё равно работает только из сайдбара. Виталий, в общем буду разбираться, искать проблему у себя. Буду пробовать уже на чистом профиле и чистом user_chrome_files, искать виновника.
В общем получилась такая вот конструкция, всё работает как надо.
/* ************************************************ */ try { this.urlbarhistorydropmarker.constructor(); } catch (e) {} this.contextmenuopenwith.constructor(); // Здесь может быть ваш код который сработает по событию "load" не раньше (() => { var load_scripts_by_url = { "chrome://browser/content/browser.xhtml": () => { var box = document.querySelector("#sidebar-box"), listener = e => { var doc = e.target; (load_scripts_by_url[doc.documentURI] || (() => {}))(doc); }; box.addEventListener("pageshow", listener); this.wheretoopenlinkmod = { destructor: function() { box.removeEventListener("pageshow", listener); } }; this.unloadlisteners.push("wheretoopenlinkmod"); window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { if (gBrowser.selectedTab.isEmpty || !arguments[0].composedTarget.closest("#goPopup,#PanelUI-history,.search-go-button")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/places.xhtml": () => { window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let ev = arguments[0], node = ev.composedTarget; if (node.ownerGlobal.opener.gBrowser.selectedTab.isEmpty) return "current"; let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/bookmarksSidebar.xhtml": (doc) => { var win = doc.defaultView; win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let ev = arguments[0], node = ev.composedTarget; if (node.ownerGlobal.parent.gBrowser.selectedTab.isEmpty) return "current"; let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/historySidebar.xhtml": (doc) => { var win = doc.defaultView; win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let ev = arguments[0], node = ev.composedTarget; if (node.ownerGlobal.parent.gBrowser.selectedTab.isEmpty) return "current"; let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, }; (load_scripts_by_url[location.href] || (() => {}))(); })(); setTimeout(() => { var loadScripts = ((name) => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${name}`, window, "UTF-8"); } catch(e) {} }); loadScripts("favicon_in_urlbar.uc.js"); loadScripts("search_engine_icon.uc.js"); // loadScripts("openNewTab.uc.js"); loadScripts("Tabs_Focus.uc.js"); loadScripts("tabstoolbar_doubleclick_opennewtab.uc.js"); loadScripts("restart_item_in_menu.uc.js"); loadScripts("add_a_bookmark_to_the_bookmarks_menu.uc.js"); // и так далее }, 0); /* ************************************************ */
Отредактировано sandro79 (05-09-2020 22:54:48)
Отсутствует
sandro79
если потребуется ещё и для закладок в меню (#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks) то замените на это
window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let node; if (gBrowser.selectedTab.isEmpty || !((node = arguments[0].composedTarget) && node.closest("#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks,#goPopup,#PanelUI-history,.search-go-button")) || (node._placesNode && node._placesNode.uri.startsWith("javascript"))) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`);
Отредактировано Vitaliy V. (05-09-2020 23:52:48)
Отсутствует
sandro79
если потребуется ещё и для закладок в меню (#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks) то замените на это
Да-да, отлично, можно тоже использовать. Главное разобрался. Отдельным файлом импортом не пошло, оставлю в custom_script_win.js. Спасибо ещё раз, теперь всё работает.
Переместил скрипт в custom_script_all_win.js, чтоб в окне библиотеки ещё работал, для порядка.
Отредактировано sandro79 (05-09-2020 23:51:54)
Отсутствует
sandro79
Выделить кодКод:
#main-menubar > menu:-moz-any(:hover,[open],[_moz-menuactive]) { background: #00299E !important; color: White !important; }
Это касается всех меню и подменю(где есть) в панели меню. (Файл, Правка, Вид, Журнал, Закладки, Инструменты, Справка).
Отредактировано sibirnik (06-09-2020 05:26:17)
Отсутствует
Vitaliy V.
Но почему не получается полноценно отдельным файлом запустить, чтоб работало везде где указано closest("#goPopup,#PanelUI-history,.search-go-button")? А работает импортом только по сайдбару в custom_script_win.js и + в окне библиотек в custom_script_all_win.js.
Пробовал уже другой код импорта, с под последнего спойлера, всё равно только в сайдбаре работает. Профиль и комплект чистые использовал. Может есть какой-то вариант запустить импортом в custom_script_win.js, в custom_script_all_win.js необязательно.
/* ************************************************ */ // Здесь может быть ваш код который сработает по событию "load" не раньше (() => { var loadscript = name => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${name}`, globalThis, "UTF-8"); } catch(e) {} }; loadscript("openNewTab.js"); // и т. д. })(); /* ************************************************ */
Сейчас у меня в в custom_script_all_win.js
/* ************************************************ */ (() => { var load_scripts_by_url = { "chrome://browser/content/browser.xhtml": () => { var box = document.querySelector("#sidebar-box"), listener = e => { var doc = e.target; (load_scripts_by_url[doc.documentURI] || (() => {}))(doc); }; box.addEventListener("pageshow", listener); this.wheretoopenlinkmod = { destructor: function() { box.removeEventListener("pageshow", listener); } }; this.unloadlisteners.push("wheretoopenlinkmod"); window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { if (gBrowser.selectedTab.isEmpty || !arguments[0].composedTarget.closest("#goPopup,#PanelUI-history,.search-go-button")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/places.xhtml": () => { window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let ev = arguments[0], node = ev.composedTarget; if (node.ownerGlobal.opener.gBrowser.selectedTab.isEmpty) return "current"; let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/bookmarksSidebar.xhtml": (doc) => { var win = doc.defaultView; win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let ev = arguments[0], node = ev.composedTarget; if (node.ownerGlobal.parent.gBrowser.selectedTab.isEmpty) return "current"; let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, "chrome://browser/content/places/historySidebar.xhtml": (doc) => { var win = doc.defaultView; win.whereToOpenLink = eval(`(${`${win.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let ev = arguments[0], node = ev.composedTarget; if (node.ownerGlobal.parent.gBrowser.selectedTab.isEmpty) return "current"; let tree = node.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, }; (load_scripts_by_url[location.href] || (() => {}))(); })(); // Здесь может быть ваш код который сработает по событию "load" не раньше setTimeout(() => { var loadScripts = ((name) => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${name}`, window, "UTF-8"); } catch(e) {} }); var url = location.href.replace(/\..*$/, ""); switch (url) { case "chrome://browser/content/browser": loadScripts("ucjsDownloadsManager.uc.js"); break; case "chrome://browser/content/downloads/contentAreaDownloadsView": loadScripts("ucjsDownloadsManager2.uc.js"); break; } }, 0); /* ************************************************ */
sandro79
Есть, выше ссылку Vitaliy V. дал, в том посте где код этого скрипта опубликован.
Да я так и подумал, что только через него импортировать, но я с этим вряд ли разберусь. Если только так, то вопрос снимаю. Чуть позже попробую всё же, а пока буду использовать в custom_script_all_win.js, как под спойлером выше.
А, ну выше же было сказано, а я бьюсь импортом запустить
А этот код подойдет для тех кому не нужно загружать отдельные скрипты.
Отредактировано sandro79 (06-09-2020 12:34:07)
Отсутствует
Vitaliy V.
Не получается. Не работает в SidebarModoki и в библиотеке открываемой во вкладке (речь только про историю).
Разместил целиком (без импорта) в custom_script_all_win.js, так как требуется везде. Код тот же что у Sandro + замена секции которую вы выше давали.
Работает в обычном сайдбаре и в библиотеке открываемой в окне.
sandro79
Есть, выше ссылку Vitaliy V. дал, в том посте где код этого скрипта опубликован.
Отредактировано _zt (06-09-2020 12:06:28)
Отсутствует
Перестал менять цвет фона в меню боковой панели (самая верхняя строка) такой код:
#sidebarMenu-popup > .panel-arrowcontainer > .panel-arrowcontent { background: lavender !important; }
Можно поправить?
Отсутствует
Код тот же что у Sandro
Этот и не обязан работать с SidebarModoki я писал что вам нужно самим добавить к этому коду https://forum.mozilla-russia.org/viewto … 25#p784425
Ну да ладно попробую отдельным скриптом.
sandro79
_zt
Удаляйте все загрузчики скриптов из custom_script_all_win.js
добавляйте этот
(async () => { var loadscript = (relpath, win) => { try { Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, win, "UTF-8"); return true; } catch(e) { if (!window.Services) { try { ChromeUtils.import("resource://gre/modules/Services.jsm", window); Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, win, "UTF-8"); return true; } catch(e) {} } } return false; }, load_scripts_by_url = { "chrome://browser/content/browser.xhtml": win => { if (win != window) return; var box = document.querySelector("#browser") || window; var listener = e => { var doc = e.target || ({}); load_scripts_by_url[doc.documentURI]?.(doc.defaultView); }; box.addEventListener("pageshow", listener); this.loadscriptsallwinorsidebar = { destructor() { box.removeEventListener("pageshow", listener); } }; this.unloadlisteners.push("loadscriptsallwinorsidebar"); //>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>> // loadscript("ucf_wheretoopenlink.js", win) && win.ucf_where_to_open_link.browser(); // loadscript("ucjsDownloadsManager.uc.js", win); //<<<<<<<<<<| Загрузка скриптов для browser.xhtml |<<<<<<<<<< }, //>>>>>>>>>>| Загрузка скриптов для др. документов |>>>>>>>>>> "chrome://browser/content/places/places.xhtml": win => { // loadscript("ucf_wheretoopenlink.js", win) && win.ucf_where_to_open_link.places(); }, "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml": win => { // loadscript("ucjsDownloadsManager2.uc.js", win); }, "about:downloads": win => { // loadscript("ucjsDownloadsManager2.uc.js", win); }, "chrome://browser/content/places/bookmarksSidebar.xhtml": win => { // loadscript("ucf_wheretoopenlink.js", win) && win.ucf_where_to_open_link.bookmarksSidebar(); }, "chrome://browser/content/places/historySidebar.xhtml": win => { // loadscript("ucf_wheretoopenlink.js", win) && win.ucf_where_to_open_link.historySidebar(); }, //<<<<<<<<<<| Загрузка скриптов для др. документов |<<<<<<<<<< }; load_scripts_by_url[location.href]?.(window); })();
и сам скрипт ucf_wheretoopenlink.js
var ucf_where_to_open_link = { browser() { window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { let node; if (gBrowser.selectedTab.isEmpty || !((node = arguments[0].composedTarget) && node.closest("#bookmarksMenuPopup,#BMB_bookmarksPopup,#PanelUI-bookmarks,#goPopup,#PanelUI-history,.search-go-button")) || (node._placesNode && node._placesNode.uri.startsWith("javascript"))) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, places() { window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { if (window.opener && window.opener.gBrowser.selectedTab.isEmpty) return "current"; let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, bookmarksSidebar() { this.historySidebar(); }, historySidebar() { window.whereToOpenLink = eval(`(${`${window.whereToOpenLink}`.replace(/^.*whereToOpenLink/, "function whereToOpenLink").replace(/(return\s*"current"\s*;)(?![\s\S]*\1)/g, ` try { if ((window._ucf_top || (window._ucf_top = Services.wm.getMostRecentWindow("navigator:browser"))).gBrowser.selectedTab.isEmpty) return "current"; let ev = arguments[0], tree = ev.composedTarget.parentNode, row = tree.view.nodeForTreeIndex(tree.getCellAt(ev.clientX, ev.clientY).row); if (row.uri.startsWith("javascript")) return "current"; return "tab"; } catch(e) { return "current"; }; `)})`); }, };
Добавлено 06-09-2020 15:18:13
sibirnik
Так вам вообще везде надо? Я же сказал в общем стиле для меню правте
xrun1
#sidebarMenu-popup { --arrowpanel-background: lavender !important; --arrowpanel-color: black !important; }
Отредактировано Vitaliy V. (05-07-2021 21:48:16)
Отсутствует
Всё сразу подхватилось и отлично работает. Огромное Вам Спасибо!
Отсутствует
Vitaliy V.
Я те скрипты в custom_script_win.js переподключал. Сейчас обратно вернул все в custom_script_all_win.js.
В стандартном сайдбаре работает, в библиотеке в окне работает, в SidebarModoki работает.
Не работает в библиотеке во вкладке и из закладки-меню "последние открытые" ( place:queryType=0&sort=8&maxResults=20 ), открывает используя активную вкладку. Речь про историю.
И что делать с секцией в //>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>>, у меня там это есть
var smbox = document.querySelector("#SM_toolbox"); if (smbox) { smbox.addEventListener("pageshow", listener); this.sidebarmodokibox = { destructor: function() { smbox.removeEventListener("pageshow", listener); } }; this.unloadlisteners.push("sidebarmodokibox"); }
Отредактировано _zt (06-09-2020 18:26:32)
Отсутствует
Не работает в библиотеке во вкладке
Исправил там ucf_wheretoopenlink.js и загрузчик, и теперь все скрипты вот так оформляйте
loadscript("My_Script.js", win);
Оставить или выкинуть? Для чего это?
Это уже не нужно листенер пришлось перенести на #browser теперь будет слушать ещё и что открывается во вкладках (но не всё в многопроцессном режиме)
т.к. вам нужно
в библиотеке во вкладке
sandro79
теперь если открыть во вкладке chrome://browser/content/downloads/contentAreaDownloadsView.xhtml
то ваш ucjsDownloadsManager2.uc.js должен там сработать
Если хотите добавьте ещё "about:downloads"
Отредактировано Vitaliy V. (06-09-2020 20:07:37)
Отсутствует
sandro79
теперь если открыть во вкладке chrome://browser/content/downloads/contentAreaDownloadsView.xhtml...
Виталий, спасибо за ещё одну фишку, но не совсем понял куда именно в загрузчик добавить код "about:downloads"? Я добавил после
"chrome://browser/content/downloads/contentAreaDownloadsView.xhtml": (win) => setTimeout(() => { loadscript("ucjsDownloadsManager2.uc.js", win); }, 0),
Коды были обновлены.
Отредактировано sandro79 (06-09-2020 20:59:20)
Отсутствует
sandro79а загрузчик обновили?
+ надо удалить из ucjsDownloadsManager2.uc.js (отделённую часть от ucjsDownloadsManager.uc.js)
if (window.opener && location.href == "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml") { }
то что в скобках разумеется оставить.
Добавлено 06-09-2020 21:10:27
но не совсем понял куда именно в загрузчик добавить код "about:downloads"? Я добавил после
да правильно
P.S. И таким же образом можно добавлять другие URL документов и загружать скрипты.
Отредактировано Vitaliy V. (07-09-2020 14:05:48)
Отсутствует
Vitaliy V.
Да, удалил, теперь сработало! Вижу разницу Так и оставлю, лишним не будет. Огромное Спасибо!
И Огромное Спасибо также за кнопку "Настройки расширений". Приноровился быстро, очень удобно.
Отредактировано sandro79 (06-09-2020 21:36:10)
Отсутствует
И Огромное Спасибо также за кнопку "Настройки расширений". Приноровился быстро, очень удобно.
А как её установить, через скрипты или CB?
Отсутствует
momo2000
Через скрипты изначально она и была.
Vitaliy V.
Спасибо.
т.к. вам нужно в библиотеке во вкладке
Не нравятся мне отдельные окна, тем более библиотека. Хотя, в случае истории, можно было бы и обойтись, но тогда не было бы такого замечательного и универсального скрипта. )
Отредактировано _zt (07-09-2020 15:53:03)
Отсутствует
Ещё два вопроса по интерфейсу:
1.
После переезда на 78 пришлось отказаться от кнопки со списком закрытых табов. Очень не хватает.
Все расширения с этим функционалом плохи: деффектные или неудобные. Нативный лист устраивает, однако в гамбургере он закопан аж за четыре клика. В меню - ближе, но тоже неэргономично.
Нельзя ли, с помощью стиля, пункт меню из History "Recently Closed Tabs" продублировать, например, крайним правым на PersonalToolbar, имитируя дропмаркер как у alltabs-button, или, если кому удобней, кнопку?
2.
Как сделать, чтобы new-tab-button был всегда прижат в крайнее правое положение, даже когда его не смещает туда arrowscrollbox? У меня эту кнопку сейчас просто спейсинг подпирает с минусовым отступом (как табуретка - не изящно).
Отсутствует
через скрипты
У меня подключено в user_chrome_files в скрипт custom_script.js импортом(3-ий спойлер) из ExtensionOptionsMenu.js, но можно и просто добавить в custom_script.js код по третьей ссылке.
В 68 у меня не запустилась, видимо и не должна, там about:addons отличается.
Отредактировано sandro79 (07-09-2020 20:59:57)
Отсутствует