Хочу удалить - сохранить в Pocket и сохранить объект как
Удалить сохранить в Pocket можно через about:config extensions.pocket.enabled — false, или стилем
Отсутствует
sandro79
так наверное, но не проверял на тем более с др. темами
@-moz-document url("chrome://browser/content/browser.xhtml") { @media (-moz-windows-default-theme: 0) and (-moz-windows-compositor) { .tabmodalprompt-buttonContainer > button:-moz-any([default="true"],:hover,:focus):not(:-moz-any(:active,[disabled="true"],[open="true"],[checked="true"])) { color: ButtonText !important; } } } @-moz-document regexp("chrome\:\/\/.*\/(commonDialog|aboutDialog|dialog|pageInfo|safeMode|sanitize|siteDataRemoveSelected)\.xhtml") { @media (-moz-windows-default-theme: 0) and (-moz-windows-compositor) { button:-moz-any([default="true"],:hover,:focus):not(:-moz-any(:active,[disabled="true"],[open="true"],[checked="true"])) { color: ButtonText !important; } } }
Отредактировано Vitaliy V. (25-05-2020 00:41:17)
Отсутствует
Помогите, пожалуйста, восстановить работу данного стиля скроллбара. После обновления до последней версии он перестал работать. Уже час бьюсь над ним и все без толку.
scrollbarbutton[sbattr="scrollbar-up-top"], scrollbarbutton[sbattr="scrollbar-down-top"], scrollbarbutton[sbattr="scrollbar-up-bottom"], scrollbarbutton[sbattr="scrollbar-down-bottom"] { -moz-appearance: none !important; display: none !important; } scrollbar[orient="vertical"] { -moz-margin-start: -15px; min-width: 15px!important; max-width: 15px!important; -moz-appearance: none!important; position: relative; background-color: transparent!important; background-image: none!important; border: 0; z-index: 2147483647; -moz-box-align: start; padding: 1px 1px 1px 6px!important; } scrollbar[orient="horizontal"] { margin-top: -15px; min-height: 15px; max-height: 15px; -moz-appearance: none!important; position: relative; background-color: transparent; background-image: none; border: 0; z-index: 2147483647; -moz-box-align: start; padding: 6px 11px 1px 1px!important; } scrollbar thumb { -moz-appearance: none !important; background-color: rgba(80,80,80,0.5); border-radius: 8px; border: 0; } scrollbar[orient="vertical"] thumb { min-height: 20px!important; min-width: 15px!important; max-width: 15px!important; } scrollbar[orient="horizontal"] thumb { min-width: 20px!important; min-height: 15px!important; max-height: 15px!important; } scrollbar thumb:hover, scrollbar thumb:active { background-color: rgba(0,0,0,0.5); } html div scrollbar { -moz-margin-start: 0!important; }
Содержимое userChrome.css
toolbarbutton#alltabs-button { -moz-binding: url(data:text/plain;charset=utf-8;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjwhLS0gQ29weXJpZ2h0IChjKSAyMDE3IEhhZ2dhaSBOdWNoaQpBdmFpbGFibGUgZm9yIHVzZSB1bmRlciB0aGUgTUlUIExpY2Vuc2U6Cmh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUCiAtLT4KCjwhLS0gUnVuIHVzZXJDaHJvbWUuanMvdXNlckNocm9tZS54dWwgYW5kIC51Yy5qcy8udWMueHVsLy5jc3MgZmlsZXMgIC0tPgo8YmluZGluZ3MgeG1sbnM9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcveGJsIj4KICAgIDxiaW5kaW5nIGlkPSJqcyIgZXh0ZW5kcz0iY2hyb21lOi8vZ2xvYmFsL2NvbnRlbnQvYmluZGluZ3MvdG9vbGJhcmJ1dHRvbi54bWwjdG9vbGJhcmJ1dHRvbi1iYWRnZWQiPgogICAgICAgIDxpbXBsZW1lbnRhdGlvbj4KICAgICAgICAgICAgPGNvbnN0cnVjdG9yPjwhW0NEQVRBWwogICAgICAgICAgICAgICAgaWYod2luZG93LnVzZXJDaHJvbWVKc01vZCkgcmV0dXJuOwogICAgICAgICAgICAgICAgd2luZG93LnVzZXJDaHJvbWVKc01vZCA9IHRydWU7CgogICAgICAgICAgICAgICAgdmFyIGNocm9tZUZpbGVzID0gRmlsZVV0aWxzLmdldERpcigiVUNocm0iLCBbXSkuZGlyZWN0b3J5RW50cmllczsKICAgICAgICAgICAgICAgIHZhciB4dWxGaWxlcyA9IFtdOwogICAgICAgICAgICAgICAgdmFyIHNzcyA9IENjWydAbW96aWxsYS5vcmcvY29udGVudC9zdHlsZS1zaGVldC1zZXJ2aWNlOzEnXS5nZXRTZXJ2aWNlKENpLm5zSVN0eWxlU2hlZXRTZXJ2aWNlKTsKCiAgICAgICAgICAgICAgICB3aGlsZShjaHJvbWVGaWxlcy5oYXNNb3JlRWxlbWVudHMoKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBmaWxlID0gY2hyb21lRmlsZXMuZ2V0TmV4dCgpLlF1ZXJ5SW50ZXJmYWNlKENpLm5zSUZpbGUpOwogICAgICAgICAgICAgICAgICAgIHZhciBmaWxlVVJJID0gU2VydmljZXMuaW8ubmV3RmlsZVVSSShmaWxlKTsKCiAgICAgICAgICAgICAgICAgICAgaWYoZmlsZS5pc0ZpbGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgICAgICBpZigvKF51c2VyQ2hyb21lfFwudWMpXC5qcyQvaS50ZXN0KGZpbGUubGVhZk5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gInVzZXJjaHJvbWUvanMiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoLyhedXNlckNocm9tZXxcLnVjKVwueHVsJC9pLnRlc3QoZmlsZS5sZWFmTmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAidXNlcmNocm9tZS94dWwiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoL1wuYXNcLmNzcyQvaS50ZXN0KGZpbGUubGVhZk5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImFnZW50c2hlZXQiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoL14oPyEodXNlckNocm9tZXx1c2VyQ29udGVudClcLmNzcyQpLitcLmNzcyQvaS50ZXN0KGZpbGUubGVhZk5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gInVzZXJzaGVldCI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYodHlwZSAhPSAibm9uZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCItLS0tLS0tLS0tXFwgIiArIGZpbGUubGVhZk5hbWUgKyAiICgiICsgdHlwZSArICIpIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHR5cGUgPT0gInVzZXJjaHJvbWUvanMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VzLnNjcmlwdGxvYWRlci5sb2FkU3ViU2NyaXB0V2l0aE9wdGlvbnMoZmlsZVVSSS5zcGVjLCB7dGFyZ2V0OiB3aW5kb3csIGlnbm9yZUNhY2hlOiB0cnVlfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PSAidXNlcmNocm9tZS94dWwiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh1bEZpbGVzLnB1c2goZmlsZVVSSS5zcGVjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0eXBlID09ICJhZ2VudHNoZWV0IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighc3NzLnNoZWV0UmVnaXN0ZXJlZChmaWxlVVJJLCBzc3MuQUdFTlRfU0hFRVQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NzLmxvYWRBbmRSZWdpc3RlclNoZWV0KGZpbGVVUkksIHNzcy5BR0VOVF9TSEVFVCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PSAidXNlcnNoZWV0IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighc3NzLnNoZWV0UmVnaXN0ZXJlZChmaWxlVVJJLCBzc3MuVVNFUl9TSEVFVCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc3MubG9hZEFuZFJlZ2lzdGVyU2hlZXQoZmlsZVVSSSwgc3NzLlVTRVJfU0hFRVQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCIjIyMjIyMjIyMjIEVSUk9SOiAiICsgZSArICIgYXQgIiArIGUubGluZU51bWJlciArICI6IiArIGUuY29sdW1uTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCItLS0tLS0tLS0tLyAiICsgZmlsZS5sZWFmTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiBsb2FkWFVMKCkgewogICAgICAgICAgICAgICAgICAgIGlmKHh1bEZpbGVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9hZE92ZXJsYXkoeHVsRmlsZXMuc2hpZnQoKSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQobG9hZFhVTCwgNSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgMCk7CiAgICAgICAgICAgIF1dPjwvY29uc3RydWN0b3I+CiAgICAgICAgPC9pbXBsZW1lbnRhdGlvbj4KICAgIDwvYmluZGluZz4KPC9iaW5kaW5ncz4K); }
Отредактировано mr.geek (17-05-2020 18:49:17)
Отсутствует
в 76 версии перестал работать multirow. обновил Aris-t2 / CustomCSSforFx - заработало, но ширину вкладок настроить не могу
использую tabs_multiple_lines_fx71.css но на изменения не реагирует
подскажите советом
Отсутствует
но ширину вкладок настроить не могу
Править или в /config/general_variables.css, или в tabs_multiple_lines_fx71, но закомментировать тогда строку @import "./config/general_variables.css"; /**/
https://forum.mozilla-russia.org/viewto … 32#p775632
Отсутствует
Что-то мой вопрос остаётся без ответа ? Никто не знает как теперь скрыть кнопки прокрутки вкладок, неправильно задал вопрос, нет решения, или чего?
Отсутствует
Править или в /config/general_variables.css,
спасибо, помогло
Отсутствует
неправильно задал вопрос, нет решения, или чего?
пропустил пост не знаю почему никто не ответил, нужно просто заменить класс т.е. точку на #
Добавлено 17-05-2020 21:34:10
перестал работать
и не будет не пытайтесь, биндинги давно не работают
Отредактировано Vitaliy V. (17-05-2020 21:34:10)
Отсутствует
После обновления до последней версии он перестал работать.
Что бы заработал необходим: https://github.com/VitaliyVstyle/VitaliyVstyle.github.io/blob/master/stylesff/toolbars/user_chrome_files.zip
Add,
Отредактировано kokoss (18-05-2020 02:00:15)
Win7
Отсутствует
Vitaliy V.
пропустил пост не знаю почему никто не ответил, нужно просто заменить класс т.е. точку на #
Спасибо.
Отредактировано voqabuhe (17-05-2020 22:25:27)
Отсутствует
kokoss
Биндинг? Не придумывайте. Если б все так просто было, но они ни как не заработают на текущих , только если переписать в скрипт, а это нетривиальная задача, по крайней мере я только один раз видел что бы Vitaliy V. такое делал.
Vitaliy V.
Я нашел решение для Everything, через какой то его внутренний протокол. Посмотрите, может пригодится для вашего расширения.
https://addons.mozilla.org/ru/firefox/addon/everything-search-we/
Отредактировано _zt (18-05-2020 01:38:04)
Отсутствует
Биндинг? Не придумывайте. Если б все так просто было, но они ни как не заработают на текущих , только если переписать в скрипт, а это нетривиальная задача, по крайней мере я только один раз видел что бы Vitaliy V. такое делал.
В user_chrome_files есть текстовый файл, в котором подробно описано как добавить скроллбар в виде css-стиля
Отредактировано kokoss (18-05-2020 13:32:34)
Win7
Отсутствует
Что бы заработал необходим: https://github.com/VitaliyVstyle/VitaliyVstyle.github.io/blob/master/stylesff/toolbars/user_chrome_files.zip
Большое спасибо, таки действительно заработало
Отсутствует
Как вариант:
скрытый текстhttps://github.com/Aris-t2/CustomJSforFx/blob/master/scripts/addonbar.uc.js
Подскажите, а что нужно дописать в этом замечательном скрипте, чтоб сделать панель немножко потоньше?
Прописал в userChrome #addonbar { height: 24px !important;}, панель уменьшилась, но значки сплющило
Отредактировано kazarin (20-05-2020 21:28:53)
Отсутствует
kokoss
это код для custom_script_win.js
ucf_custom_script_win
faviconinurlbar: { constructor: function() { var faviconinurlbar = document.querySelector("#permissions-granted-icon"); if (!faviconinurlbar) return; gBrowser.tabContainer.addEventListener("TabAttrModified", this); gBrowser.addProgressListener(this); ucf_custom_script_win.unloadlisteners.push("faviconinurlbar"); this.handleEvent = function(event) { var tab = event.target, image; if (tab.selected) faviconinurlbar.style.setProperty("--v-faviconinurlbar", (image = tab.image) ? `url("${image}")` : ""); }; this.onStateChange = function(aWebProgress, aRequest, aStateFlags, aStatus) { var nsiwpl = Ci.nsIWebProgressListener; if ((aStateFlags & nsiwpl.STATE_IS_NETWORK) && aWebProgress && aWebProgress.isTopLevel) { if (aStateFlags & nsiwpl.STATE_START) { faviconinurlbar.setAttribute("busy", true); } else if (aStateFlags & nsiwpl.STATE_STOP) { faviconinurlbar.setAttribute("busy", false); if (!gBrowser.selectedTab.image) faviconinurlbar.style.setProperty("--v-faviconinurlbar", ""); } } }; }, destructor: function() { gBrowser.tabContainer.removeEventListener("TabAttrModified", this); gBrowser.removeProgressListener(this); } }, opennewtabwithleftclick: { constructor: function() { gBrowser.tabpanels.addEventListener("mousedown", this, true); ucf_custom_script_win.unloadlisteners.push("opennewtabwithleftclick"); }, handleEvent(e) { this[e.type](e); }, mousedown(e) { if (e.button || e.ctrlKey || e.shiftKey || e.altKey) return; var {spec} = gBrowser.currentURI; if (spec != "about:newtab" && spec != "about:home") return; var br = gBrowser.selectedBrowser; if (!br.matches(":hover")) return; this.br = br; this.loadURI = br.loadURI; br.loadURI = this.tab; window.addEventListener("mousemove", this, {once: true}); window.addEventListener("keydown", this, {once: true}); }, mousemove() { if (!this.br) return; window.removeEventListener("mousemove", this); window.removeEventListener("keydown", this); this.br.loadURI = this.loadURI; this.loadURI = this.br = null; }, keydown() { this.mousemove(); }, get tab() { delete this.tab; return this.tab = (url, params) => { var {userContextId} = this.br.contentPrincipal; this.mousemove(); openUILinkIn(url, "tab", Object.assign(params, {userContextId})); } }, destructor: function() { gBrowser.tabpanels.removeEventListener("mousedown", this, true); } },
#permissions-granted-icon { --v-default-faviconinurlbar: url("chrome://global/skin/icons/identity-icon.svg"); /* дефолтная иконка */ --v-permissions-granted-outline: 1px dashed green; /* обводка иконки для страниц с доп. разрешениями */ display: -moz-box !important; list-style-image: var(--v-default-faviconinurlbar) !important; pointer-events: none !important; } #identity-box[pageproxystate="valid"].unknownIdentity #identity-icon, #identity-box:-moz-any(.extensionPage,.chromeUI):not(.grantedPermissions) #permissions-granted-icon { display: none !important; } #identity-box[pageproxystate="valid"].grantedPermissions > #permissions-granted-icon { outline: var(--v-permissions-granted-outline) !important; pointer-events: auto !important; } #identity-box:not(:-moz-any(.extensionPage,.chromeUI)) #permissions-granted-icon[busy="false"] { list-style-image: var(--v-faviconinurlbar, var(--v-default-faviconinurlbar)) !important; }
Добавлено 20-05-2020 17:51:51
P.S. кстати обновил user_chrome_files вчера
Отредактировано Vitaliy V. (17-07-2020 17:53:02)
Отсутствует
Vitaliy V.
Чё то я ни въехал, вроде всё сделал как надо, и не работает, ну да ладно потом разберусь. Благодарю
Add, может кто нибудь у себя в 76 проверить, а то у меня не работает?
Отредактировано kokoss (21-05-2020 17:46:02)
Win7
Отсутствует
А как правильно обновить, чтобы свои изменения не утерять?
папки custom_styles и custom_scripts можно не обновлять ну разве что в custom_script_win.js незначительное изменение
Отсутствует
voqabuhe
не мне влом что-то там ещё писать мне за это не платят...
ну ладно изменения такие:
- удалены старые методы типа Node.appendChild() заменены на новые append() after() и т.д.
ну и соответственно в версиях < 49 поддержки нет
- добавлены модули, функции для песочницы куда загружается custom_script.js
они память не жрут если не используются т. к. подключены с помощью ленивых геттеров
- удалены (закомментированы) переменные Cc Ci Cu для XPCOM компонентов в конф. файле т.к.
не требуются с версии 60, но можно раскомментировать в коде если используете версию старше
- изменено окно настроек, добавлена ссылка-кнопка для перезагрузки со сбросом стартового кэша,
добавлена опция где разместить доп. панель под панелью навигации или закладок, т. к. спрашивали недавно здесь
- остальное по мелочи
Отредактировано Vitaliy V. (21-05-2020 17:45:17)
Отсутствует
может кто нибудь у себя в 76 проверить, а то у меня не работает?
Фавикон работает, открыть в новой вкладке из топа сайтов тоже работает.
Экспериментировал как на рабочем с другими скриптами и стилями прошлой версией user_chrome_files, так и на чистом профиле и свежем user_chrome_files.
// Этот скрипт работает в главном окне браузера если включено в настройках var ucf_custom_script_win = { initialized: false, unloadlisteners: [], load: function() { if (this.initialized) return; this.initialized = true; // this.specialwidgets.constructor(); // <-- Special Widgets // this.autohidesidebar.constructor(); // <-- Auto Hide Sidebar /* ************************************************ */ this.faviconinurlbar.constructor(); this.opennewtabwithleftclick.constructor(); // Здесь может быть ваш код который сработает по событию "load" не раньше /* ************************************************ */ if (this.unloadlisteners.length < 1) return; window.addEventListener("unload", this, false); }, handleEvent: function(event) { this[event.type](event); }, unload: function() { window.removeEventListener("unload", this, false); this.unloadlisteners.forEach((str) => { try { this[str].destructor(); } catch (e) {} }); }, faviconinurlbar: { constructor: function() { var faviconinurlbar = document.querySelector("#permissions-granted-icon"); if (!faviconinurlbar) return; gBrowser.tabContainer.addEventListener("TabAttrModified", this); gBrowser.addProgressListener(this); ucf_custom_script_win.unloadlisteners.push("faviconinurlbar"); this.handleEvent = function(event) { var tab = event.target, image; if (tab.selected) faviconinurlbar.style.setProperty("--v-faviconinurlbar", (image = tab.image) ? `url("${image}")` : ""); }; this.onStateChange = function(aWebProgress, aRequest, aStateFlags, aStatus) { var nsiwpl = Ci.nsIWebProgressListener; if ((aStateFlags & nsiwpl.STATE_IS_NETWORK) && aWebProgress && aWebProgress.isTopLevel) { if (aStateFlags & nsiwpl.STATE_START) { faviconinurlbar.setAttribute("busy", true); } else if (aStateFlags & nsiwpl.STATE_STOP) { faviconinurlbar.setAttribute("busy", false); if (!gBrowser.selectedTab.image) faviconinurlbar.style.setProperty("--v-faviconinurlbar", ""); } } }; }, destructor: function() { gBrowser.tabContainer.removeEventListener("TabAttrModified", this); gBrowser.removeProgressListener(this); } }, opennewtabwithleftclick: { constructor: function() { gBrowser.tabpanels.addEventListener("mousedown", this, true); ucf_custom_script_win.unloadlisteners.push("opennewtabwithleftclick"); }, handleEvent(e) { this[e.type](e); }, mousedown(e) { if (e.button || e.ctrlKey || e.shiftKey || e.altKey) return; var {spec} = gBrowser.currentURI; if (spec != "about:newtab" && spec != "about:home") return; var br = gBrowser.selectedBrowser; if (!br.matches(":hover")) return; this.br = br; this.loadURI = br.loadURI; br.loadURI = this.tab; window.addEventListener("mousemove", this, {once: true}); window.addEventListener("keydown", this, {once: true}); }, mousemove() { if (!this.br) return; window.removeEventListener("mousemove", this); window.removeEventListener("keydown", this); this.br.loadURI = this.loadURI; this.loadURI = this.br = null; }, keydown() { this.mousemove(); }, get tab() { delete this.tab; return this.tab = (url, params) => { var {userContextId} = this.br.contentPrincipal; this.mousemove(); openUILinkIn(url, "tab", Object.assign(params, {userContextId})); } }, destructor: function() { gBrowser.tabpanels.removeEventListener("mousedown", this, true); } }, specialwidgets: { _timer: null, get Customizable() { delete this.Customizable; if ("createSpecialWidget" in CustomizableUI) return this.Customizable = CustomizableUI; var scope = null; try { scope = Cu.import("resource:///modules/CustomizableUI.jsm", {}).CustomizableUIInternal; } catch (e) { } return this.Customizable = scope; }, constructor: function() { if (!("CustomizableUI" in window) || !("gCustomizeMode" in window)) return; ucf_custom_script_win.unloadlisteners.push("specialwidgets"); window.addEventListener("customizationready", this, false); }, destructor: function() { window.removeEventListener("customizationready", this, false); }, handleEvent: function(event) { this[event.type](event); }, customizationchange: function() { clearTimeout(this._timer); this._timer = setTimeout(() => { this.createSpecialWidgets(); }, 1000); }, customizationready: function() { if (!this.Customizable) return; this.createSpecialWidgets(); window.addEventListener("customizationchange", this, false); window.addEventListener("customizationending", this, false); }, customizationending: function() { window.removeEventListener("customizationchange", this, false); window.removeEventListener("customizationending", this, false); }, createSpecialWidgets: function() { try { var fragment = document.createDocumentFragment(); if (this.findSpecialWidgets("spring")) { var spring = this.Customizable.createSpecialWidget("spring", document); spring.setAttribute("label", "Растягивающийся интервал"); fragment.append(gCustomizeMode.wrapToolbarItem(spring, "palette")); } if (this.findSpecialWidgets("spacer")) { var spacer = this.Customizable.createSpecialWidget("spacer", document); spacer.setAttribute("label", "Интервал"); fragment.append(gCustomizeMode.wrapToolbarItem(spacer, "palette")); } if (this.findSpecialWidgets("separator")) { var separator = this.Customizable.createSpecialWidget("separator", document); separator.setAttribute("label", "Разделитель"); fragment.append(gCustomizeMode.wrapToolbarItem(separator, "palette")); } gCustomizeMode.visiblePalette.append(fragment); } catch (e) {} }, findSpecialWidgets: function(string) { try { if (!gCustomizeMode.visiblePalette.querySelector(`toolbar${string}[id^="customizableui-special-${string}"]`)) return true; } catch (e) {} return false; } }, autohidesidebar: { sidebar: null, constructor: function() { var sidebar = this.sidebar = document.querySelector("#sidebar-box"); if(!sidebar) return; ["dragenter", "drop", "dragexit"].forEach((type) => { sidebar.addEventListener(type, this, false); }); ucf_custom_script_win.unloadlisteners.push("autohidesidebar"); }, destructor: function() { var sidebar = this.sidebar; ["dragenter", "drop", "dragexit"].forEach((type) => { sidebar.removeEventListener(type, this, false); }); }, handleEvent: function(event) { this[event.type](event); }, dragenter: function() { if (!this.sidebar.hasAttribute("sidebardrag")) this.sidebar.setAttribute("sidebardrag", "true"); }, drop: function() { if (this.sidebar.hasAttribute("sidebardrag")) this.sidebar.removeAttribute("sidebardrag"); }, dragexit: function(event) { var sidebar = this.sidebar; var boxObj = sidebar.getBoundingClientRect(), boxScrn = !sidebar.boxObject ? sidebar : sidebar.boxObject; if ((!event.relatedTarget || event.screenY <= (boxScrn.screenY + 5) || event.screenY >= (boxScrn.screenY + boxObj.height - 5) || event.screenX <= (boxScrn.screenX + 5) || event.screenX >= (boxScrn.screenX + boxObj.width - 5)) && sidebar.hasAttribute("sidebardrag")) sidebar.removeAttribute("sidebardrag"); } } }; if (window.document.readyState != "complete") { window.addEventListener("load", function load() { window.removeEventListener("load", load, false); ucf_custom_script_win.load(); }, false); } else ucf_custom_script_win.load();
Отсутствует