Dumby
Помогите пожалуйста. Использую Ваш скрипт закрытия всех вкладок кроме активной, только со своей иконкой
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACNUlEQVQ4jY2TT08aQRjG59LL7mk/gxdvXmw/QD+MX6AePNhk0jThMGljEzLpxio0arQWMGpqomXBP7TQ3YpQ5J8CQf65C7vUKK61Hp4eFhMwBPskc5iZzO9987zPENIV9WyOTkxMPCGPaJIxcdq7NdJ3SJcj4+/jdns+WvMPg1AqC+5vujKjdhrUEx4lhBDyciE0NqPZbU8G8BWAz9pgyCRj4oKqK0t5wJsF5MPr+rS8NkKmOJfc301tMQesl4BQFdhJ9UMolYX1pK5slYGNEuAvAF7VCFJKBUIIIS7OpYW4pX4pA/t14KgJRLMOhDEm7mZ1JaYDB3UgXAXWkkaQUlnoa9HFubSRMrXoOXBsAuVLIFGoBuJFXcn/BtIWkGgBoUxP5YdycS7tnVhqvg3UO0D7D9CygUbHAaoFI0hlefDje3HOpWTZ1Jo2cHMH2HeAeQMkS0Mq94oxJv4qG4p5A1z9ddb5NRDL1XyP5oTKshA71ZXiBVC5dFpv2kDlCshYwHZqCIQxJm4f64pmOGalLUAt6ErqzFKLF0CyBUQagO9wAIRSWViN68rOGRCqOeNSum5zzqUfRVP7aQDhGrBZAuaiPZBJxsS5mK6snDgB2SgBgUT/nDnnUjBnqV8rQKAIfMwCM3tdyOul/Wfuo9vObNqJqEcd7LaLc8mfNLVPp8CHNPBWta0X8qbzH+jq4fM32m3n3cGAhD2AzGuWyuO2RZcj432XU4u7T/9nzi7OpVcrobH7/T9AEdt1RBP8kgAAAABJRU5ErkJggg==
CustomizableUI.createWidget({ id: "Close-Tabs-button", label: "Закрыть другие вкладки", tooltiptext: "Закрыть другие вкладки", defaultArea: CustomizableUI.AREA_NAVBAR, localized: false, onCreated(btn) { btn._handleClick = this.close; btn.setAttribute("image", "chrome://user_chrome_files/content/custom_styles/svg/panel-icon-cancel.svg"); }, close() { var gb = this.ownerGlobal.gBrowser; gb.removeAllTabsBut(gb.selectedTab); } });
Отсутствует
sandro79
У меня снова предложение чуть поперёк просьбы.
Там <svg> 32x32, а <path> 20x20 по-центру,
то есть как бы отступ 6px со всех сторон (поэтому выглядит маленькой).
Но можно во viewBox подогнать x, y, width и height.
Допустим, максимально. Меняем в самой svg'ке viewBox="0 0 32 32"
на viewBox="6 6 20 20" и отступа не будет совсем, тогда будет выглядеть крупнее.
Если положительного результата не получится, дай знать, полезу в js-код.
Отсутствует
Допустим, максимально. Меняем в самой svg'ке viewBox="0 0 32 32"
на viewBox="6 6 20 20" и отступа не будет совсем, тогда будет выглядеть крупнее
6 6 20 20 всё-же крупновато получается. Но попробовал подрегулировать до viewBox="5 5 22 22", почти как с оригинальной svg и стилем, но чуть всё-равно крупнее. А 6 6 23 23 попробовал - размер визуально вроде не отличается, но сдвигается вверх и влево. Никак не получается один к одному подогнать.
Dumby
Ну если можно, добавьте пожалуйста css в js-код, ну почти подогнал как с оригинальной и стилем, но крупновато всё же с viewBox="5 5 22 22".
А за метод правки и полезную информацию Большое Спасибо, а то я пытался только цифры 32 менять в коде svg, теперь буду хоть это знать.
Отсутствует
сдвигается вверх и влево
Вот все центрированные варианты
viewBox="0 0 32 32" viewBox="1 1 30 30" viewBox="2 2 28 28" viewBox="3 3 26 26" viewBox="4 4 24 24" viewBox="5 5 22 22" viewBox="6 6 20 20"
добавьте пожалуйста css в js-код
Допустим, в атрибут style. Может не сработать,
если user или agent стилями приколочено, тогда снова дай знать.
CustomizableUI.createWidget({ id: "Close-Tabs-button", label: "Закрыть другие вкладки", tooltiptext: "Закрыть другие вкладки", defaultArea: CustomizableUI.AREA_NAVBAR, localized: false, onCreated(btn) { btn.render = this.render; btn._handleClick = this.close; btn.setAttribute("image", "chrome://user_chrome_files/content/custom_styles/svg/panel-icon-cancel.svg"); }, render() { delete this.render; this.render(); this.icon.style.setProperty("padding", "2px", "important"); }, close() { var gb = this.ownerGlobal.gBrowser; gb.removeAllTabsBut(gb.selectedTab); } });
Отредактировано Dumby (25-09-2021 15:13:11)
Отсутствует
Вот все центрированные варианты
Спасибо, это тоже мне может пригодится в процессе экспериментов в дальнейшем. Пятый и шестой вариант, ну почти подходят.
Если бы не стиль с паддингом, где самое то получилось, как мне показалось, можно было и по такому способу поменять размер.
Допустим, в атрибут style. Может не сработать, если user или agent стилями приколочено, тогда снова дай знать
Отлично всё, сработало! Теперь один в один. Огромное Вам Спасибо за помощь
Отсутствует
sandro79
Всё таки проверил дробные числа. Похоже работает.
Вот с шагом в одну десятую. Ну, это я уже просто так, на интерес.
viewBox="0 0 32 32" viewBox="0.1 0.1 31.8 31.8" viewBox="0.2 0.2 31.6 31.6" viewBox="0.3 0.3 31.4 31.4" viewBox="0.4 0.4 31.2 31.2" viewBox="0.5 0.5 31 31" viewBox="0.6 0.6 30.8 30.8" viewBox="0.7 0.7 30.6 30.6" viewBox="0.8 0.8 30.4 30.4" viewBox="0.9 0.9 30.2 30.2" viewBox="1 1 30 30" viewBox="1.1 1.1 29.8 29.8" viewBox="1.2 1.2 29.6 29.6" viewBox="1.3 1.3 29.4 29.4" viewBox="1.4 1.4 29.2 29.2" viewBox="1.5 1.5 29 29" viewBox="1.6 1.6 28.8 28.8" viewBox="1.7 1.7 28.6 28.6" viewBox="1.8 1.8 28.4 28.4" viewBox="1.9 1.9 28.2 28.2" viewBox="2 2 28 28" viewBox="2.1 2.1 27.8 27.8" viewBox="2.2 2.2 27.6 27.6" viewBox="2.3 2.3 27.4 27.4" viewBox="2.4 2.4 27.2 27.2" viewBox="2.5 2.5 27 27" viewBox="2.6 2.6 26.8 26.8" viewBox="2.7 2.7 26.6 26.6" viewBox="2.8 2.8 26.4 26.4" viewBox="2.9 2.9 26.2 26.2" viewBox="3 3 26 26" viewBox="3.1 3.1 25.8 25.8" viewBox="3.2 3.2 25.6 25.6" viewBox="3.3 3.3 25.4 25.4" viewBox="3.4 3.4 25.2 25.2" viewBox="3.5 3.5 25 25" viewBox="3.6 3.6 24.8 24.8" viewBox="3.7 3.7 24.6 24.6" viewBox="3.8 3.8 24.4 24.4" viewBox="3.9 3.9 24.2 24.2" viewBox="4 4 24 24" viewBox="4.1 4.1 23.8 23.8" viewBox="4.2 4.2 23.6 23.6" viewBox="4.3 4.3 23.4 23.4" viewBox="4.4 4.4 23.2 23.2" viewBox="4.5 4.5 23 23" viewBox="4.6 4.6 22.8 22.8" viewBox="4.7 4.7 22.6 22.6" viewBox="4.8 4.8 22.4 22.4" viewBox="4.9 4.9 22.2 22.2" viewBox="5 5 22 22" viewBox="5.1 5.1 21.8 21.8" viewBox="5.2 5.2 21.6 21.6" viewBox="5.3 5.3 21.4 21.4" viewBox="5.4 5.4 21.2 21.2" viewBox="5.5 5.5 21 21" viewBox="5.6 5.6 20.8 20.8" viewBox="5.7 5.7 20.6 20.6" viewBox="5.8 5.8 20.4 20.4" viewBox="5.9 5.9 20.2 20.2" viewBox="6 6 20 20"
Отсутствует
Всё таки проверил дробные числа. Похоже работает. Вот с шагом в одну десятую. Ну, это я уже просто так, на интерес
Да, это работает. viewBox="4.7 4.7 22.6 22.6" подошло идеально, ну я не увидел визуально разницы. Спасибо Большое за таблицу. Тоже пригодится в дальнейшем.
Я ещё вчера заменил кнопки для окна загрузок и соответственно библиотеки на эту же(panel-icon-cancel.svg) и panel-icon-retry.svg из 78 , и там они тоже мелковаты получились, да и в 78 такие же были. panel-icon-cancel.svg для нового скрипта сделаю дубликат с др. именем, а для окон загрузок подберу уже из дробных. Правда, чуть раньше уже пробовал с целыми, с кнопкой отмены нормально всё, а вот кнопку panel-icon-retry.svg начинает коробить - круглая стрелка квадратной становится. Ну буду экспериментировать, не получится, ну там и не столь важно в принципе. Спасибо за помощь!
Почти получилось с кнопкой повтора с viewBox="4.7 4.7 22.6 22.6", округлости чуть снизу не хватает, но попробую ещё с другими числами.
Да так и оставлю в окнах загрузок, нормально.
Отредактировано sandro79 (25-09-2021 17:05:18)
Отсутствует
voqabuhe
раскомментируйте эту строку https://github.com/VitaliyVstyle/Vitali … ts.jsm#L16
стиль добавляйте соответственно в custom_styles_all_agent.css
Отсутствует
Vitaliy V.
Спасибо за обновлённый вариант urlbarhistorydropmarker. Тоже его забрал.
В старом варианте пропал фон наведения в 92+ и значок сдвинулся чуть вправо(но я его вернул на место правда), а тут всё с этим в порядке.
Но скрипт для значка "Копировать ссылку" оставлю, привык к нему за три с лишним года.
Виталий, а нельзя ли ещё добавить в urlbarhistorydropmarker действие "Обновить текущую страницу" по СКМ? Вообще было бы супер - три в одном!
Отредактировано sandro79 (26-09-2021 20:37:07)
Отсутствует
sandro79
Сомнительное удобство обновлять страницу колесом, но добавил
в принципе можно на другую функцию заменить здесь
if (e.button === 1) {
BrowserReload();
return;
}
Отсутствует
Сомнительное удобство обновлять страницу колесом, но добавил...
Ну да. Но ничего так, вполне удобно. Колесо у меня работает отлично.
Да и хочется чего-то необычного испробовать. Всё работает отлично. Огромное Спасибо
Добавлю себе в пост, чтоб не потерять, три варианта скрипта: старый с правленным мной под Протон адресом для иконки, новый без обновления по СКМ, и новый с обновлением страницы по СКМ
(this.urlbarhistorydropmarker = { dropmarker: null, provider: null, get style() { delete this.style; return this.style = "data:text/css;charset=utf-8," + encodeURIComponent(` #urlbar .urlbar-history-dropmarker { list-style-image: url("chrome://global/skin/icons/arrow-down.svg"); transition: opacity 0.15s ease; } #urlbar[switchingtabs] > #urlbar-input-container > .urlbar-history-dropmarker { transition: none; } #urlbar[usertyping] > #urlbar-input-container > .urlbar-history-dropmarker { display: none; } #nav-bar:not([customizing="true"]) > #nav-bar-customization-target > #urlbar-container:not(:hover) > #urlbar:not([focused]) > #urlbar-input-container > .urlbar-history-dropmarker { opacity: 0; } `); }, init(that) { Services.prefs.addObserver("browser.urlbar.suggest.history", this); Services.prefs.addObserver("browser.urlbar.suggest.topsites", this); that.unloadlisteners.push("urlbarhistorydropmarker"); var {UrlbarProviderTopSites: provider} = {UrlbarProviderTopSites: this.provider} = ChromeUtils.import("resource:///modules/UrlbarProviderTopSites.jsm"); if (!provider.orig_PRIORITY) { provider.orig_PRIORITY = provider.ucf_PRIORITY = provider.PRIORITY; delete provider.constructor.prototype.PRIORITY; Object.defineProperty(provider.constructor.prototype, "PRIORITY", { enumerable: true, get() { var priory = this.ucf_PRIORITY; this.ucf_PRIORITY = this.orig_PRIORITY; return priory; }, set(val) { this.ucf_PRIORITY = val; }, }); } if (Services.prefs.getBoolPref("browser.urlbar.suggest.history", false) && !Services.prefs.getBoolPref("browser.urlbar.suggest.topsites", true)) this.createDropmarker(); }, createDropmarker() { var fragment = MozXULElement.parseXULToFragment(`<image class="urlbar-history-dropmarker urlbar-icon chromeclass-toolbar-additional" role="button" tooltiptext="Показать историю"/>`); var dropmarker = this.dropmarker = fragment.firstElementChild; document.querySelector("#urlbar #page-action-buttons").before(fragment); dropmarker.addEventListener("mousedown", this); windowUtils.loadSheetUsingURIString(this.style, windowUtils.USER_SHEET); }, removeDropmarker() { this.dropmarker.removeEventListener("mousedown", this); this.dropmarker.remove(); this.dropmarker = null; windowUtils.removeSheetUsingURIString(this.style, windowUtils.USER_SHEET); }, destructor() { if (this.dropmarker) this.dropmarker.removeEventListener("mousedown", this); Services.prefs.removeObserver("browser.urlbar.suggest.history", this); Services.prefs.removeObserver("browser.urlbar.suggest.topsites", this); }, observe() { if (Services.prefs.getBoolPref("browser.urlbar.suggest.history", false) && !Services.prefs.getBoolPref("browser.urlbar.suggest.topsites", true) && !this.dropmarker) this.createDropmarker(); else if (this.dropmarker) this.removeDropmarker(); }, handleEvent(event) { event.preventDefault(); event.stopPropagation(); if (gURLBar.view.isOpen) gURLBar.view.close(); else { this.provider.PRIORITY = 0; gURLBar.focus(); gURLBar.startQuery({ allowAutofill: false }); } } }).init(this);
(this.urlbarhistorydropmarker = { // -- Настройки --> hidewhenusertyping: false, // скрывать dropmarker при вводе copyurlpightclick: true, // копирование URL по ПКМ currentURIlabel: "Адрес текущей страницы в буфере обмена!", valueIsTypedlabel: "Содержимое адресной строки в буфере обмена!", ЛКМtooltiptext: "Показать историю", ПКМtooltiptext: "Копировать URL в буфер обмена", // <-- Настройки -- dropmarker: null, provider: null, get style() { delete this.style; return this.style = "data:text/css;charset=utf-8," + encodeURIComponent(` #urlbar .urlbar-history-dropmarker { list-style-image: url("chrome://global/skin/icons/arrow-down.svg") !important; transition: opacity 0.15s ease; } #urlbar[switchingtabs] > #urlbar-input-container > .urlbar-history-dropmarker { transition: none; } ${this.hidewhenusertyping ? `#urlbar[usertyping] > #urlbar-input-container > .urlbar-history-dropmarker { display: none; }` : ""} #nav-bar:not([customizing="true"]) > #nav-bar-customization-target > #urlbar-container:not(:hover) > #urlbar:not([focused]) > #urlbar-input-container > .urlbar-history-dropmarker { opacity: 0; } `); }, init(that) { Services.prefs.addObserver("browser.urlbar.suggest.history", this); Services.prefs.addObserver("browser.urlbar.suggest.topsites", this); that.unloadlisteners?.push("urlbarhistorydropmarker"); var { UrlbarProviderTopSites: provider } = { UrlbarProviderTopSites: this.provider } = ChromeUtils.import("resource:///modules/UrlbarProviderTopSites.jsm"); if (!provider.orig_PRIORITY) { provider.orig_PRIORITY = provider.ucf_PRIORITY = provider.PRIORITY; delete provider.constructor.prototype.PRIORITY; Object.defineProperty(provider.constructor.prototype, "PRIORITY", { enumerable: true, get() { var priory = this.ucf_PRIORITY; this.ucf_PRIORITY = this.orig_PRIORITY; return priory; }, set(val) { this.ucf_PRIORITY = val; }, }); } if (Services.prefs.getBoolPref("browser.urlbar.suggest.history", false) && !Services.prefs.getBoolPref("browser.urlbar.suggest.topsites", true)) this.createDropmarker(); }, createDropmarker() { var fragment = MozXULElement.parseXULToFragment(`<image class="urlbar-page-action urlbar-history-dropmarker urlbar-icon" tooltiptext="${ !this.copyurlpightclick ? `${this.ЛКМtooltiptext}` : `ЛКМ: ${this.ЛКМtooltiptext} ПКМ: ${this.ПКМtooltiptext}` }"/>`); var dropmarker = this.dropmarker = fragment.firstElementChild; document.querySelector("#urlbar #urlbar-go-button").after(fragment); dropmarker.addEventListener("mousedown", this); if (this.copyurlpightclick) dropmarker.addEventListener("click", this); windowUtils.loadSheetUsingURIString(this.style, windowUtils.USER_SHEET); }, removeDropmarker() { this.removeListeners(); this.dropmarker.remove(); this.dropmarker = null; windowUtils.removeSheetUsingURIString(this.style, windowUtils.USER_SHEET); }, removeListeners() { this.dropmarker.removeEventListener("mousedown", this); if (this.copyurlpightclick) this.dropmarker.removeEventListener("click", this); }, destructor() { if (this.dropmarker) this.removeListeners(); Services.prefs.removeObserver("browser.urlbar.suggest.history", this); Services.prefs.removeObserver("browser.urlbar.suggest.topsites", this); }, observe() { if (Services.prefs.getBoolPref("browser.urlbar.suggest.history", false) && !Services.prefs.getBoolPref("browser.urlbar.suggest.topsites", true) && !this.dropmarker) this.createDropmarker(); else if (this.dropmarker) this.removeDropmarker(); }, mousedown(e) { if (e.button !== 0) return; e.preventDefault(); e.stopPropagation(); if (gURLBar.view.isOpen) gURLBar.view.close(); else { this.provider.PRIORITY = 0; gURLBar.focus(); gURLBar.startQuery({ allowAutofill: false }); } }, click(e) { if (e.button !== 2) return; var currentURI = this.currentURIlabel, valueIsTyped = this.valueIsTypedlabel; var gBrowserBundle = { GetStringFromName(str) { return ({ "confirmationHint.currentURI.label": currentURI, "confirmationHint.valueIsTyped.label": valueIsTyped, })[str]; } }; var show = eval(`(function ${e.view.ConfirmationHint.show})`); var helper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper); (this.click = e => { if (e.button !== 2) return; e.preventDefault(); e.stopPropagation(); var url, mesId; if (!gURLBar.valueIsTyped) { url = gURLBar.makeURIReadable(gBrowser.selectedBrowser.currentURI).displaySpec; mesId = "currentURI"; } else { url = gURLBar.untrimmedValue; mesId = "valueIsTyped"; } helper.copyString(url); show.call(ConfirmationHint, this.dropmarker, mesId, { hideArrow: true }); })(e); }, handleEvent(e) { this[e.type](e); }, }).init(this);
(this.urlbarhistorydropmarker = { // -- Настройки --> hidewhenusertyping: false, // скрывать dropmarker при вводе reloadpage: true, // обновить текущую страницу по СКМ copyurlrightclick: true, // копирование URL по ПКМ copyvalueistyped: true, // при вводе копировать содержимое адресной строки вместо URL currentURIlabel: "Адрес текущей страницы в буфере обмена!", valueIsTypedlabel: "Содержимое адресной строки в буфере обмена!", Ltooltiptext: "Показать историю", Mtooltiptext: "Обновить текущую страницу", Rtooltiptext: "Копировать URL в буфер обмена", // <-- Настройки -- dropmarker: null, provider: null, get style() { delete this.style; return this.style = "data:text/css;charset=utf-8," + encodeURIComponent(` #urlbar .urlbar-history-dropmarker { list-style-image: url("chrome://global/skin/icons/arrow-down.svg") !important; transition: opacity 0.15s ease; } #urlbar[switchingtabs] > #urlbar-input-container > .urlbar-history-dropmarker { transition: none; } ${this.hidewhenusertyping ? `#urlbar[usertyping] > #urlbar-input-container > .urlbar-history-dropmarker { display: none; }` : ""} #nav-bar:not([customizing="true"]) > #nav-bar-customization-target > #urlbar-container:not(:hover) > #urlbar:not([focused]) > #urlbar-input-container > .urlbar-history-dropmarker { opacity: 0; } `); }, init(that) { Services.prefs.addObserver("browser.urlbar.suggest.history", this); Services.prefs.addObserver("browser.urlbar.suggest.topsites", this); that.unloadlisteners?.push("urlbarhistorydropmarker"); var { UrlbarProviderTopSites: provider } = { UrlbarProviderTopSites: this.provider } = ChromeUtils.import("resource:///modules/UrlbarProviderTopSites.jsm"); if (!provider.orig_PRIORITY) { provider.orig_PRIORITY = provider.ucf_PRIORITY = provider.PRIORITY; delete provider.constructor.prototype.PRIORITY; Object.defineProperty(provider.constructor.prototype, "PRIORITY", { enumerable: true, get() { var priory = this.ucf_PRIORITY; this.ucf_PRIORITY = this.orig_PRIORITY; return priory; }, set(val) { this.ucf_PRIORITY = val; }, }); } if (Services.prefs.getBoolPref("browser.urlbar.suggest.history", false) && !Services.prefs.getBoolPref("browser.urlbar.suggest.topsites", true)) this.createDropmarker(); }, get tooltipText() { delete this.tooltipText; var l = this.Ltooltiptext, m = "", r = ""; if (this.reloadpage) l = `ЛКМ: ${this.Ltooltiptext}`, m = ` СКМ: ${this.Mtooltiptext}`; if (this.copyurlrightclick) l = `ЛКМ: ${this.Ltooltiptext}`, r = ` ПКМ: ${this.Rtooltiptext}`; return this.tooltipText = `${l}${m}${r}`; }, createDropmarker() { var fragment = MozXULElement.parseXULToFragment(`<image class="urlbar-page-action urlbar-history-dropmarker urlbar-icon" tooltiptext="${this.tooltipText}"/>`); var dropmarker = this.dropmarker = fragment.firstElementChild; document.querySelector("#urlbar #urlbar-go-button").after(fragment); dropmarker.addEventListener("mousedown", this); if (this.copyurlrightclick || this.reloadpage) dropmarker.addEventListener("click", this); windowUtils.loadSheetUsingURIString(this.style, windowUtils.USER_SHEET); }, removeDropmarker() { this.removeListeners(); this.dropmarker.remove(); this.dropmarker = null; windowUtils.removeSheetUsingURIString(this.style, windowUtils.USER_SHEET); }, removeListeners() { this.dropmarker.removeEventListener("mousedown", this); if (this.copyurlrightclick || this.reloadpage) this.dropmarker.removeEventListener("click", this); }, destructor() { if (this.dropmarker) this.removeListeners(); Services.prefs.removeObserver("browser.urlbar.suggest.history", this); Services.prefs.removeObserver("browser.urlbar.suggest.topsites", this); }, observe() { if (Services.prefs.getBoolPref("browser.urlbar.suggest.history", false) && !Services.prefs.getBoolPref("browser.urlbar.suggest.topsites", true) && !this.dropmarker) this.createDropmarker(); else if (this.dropmarker) this.removeDropmarker(); }, mousedown(e) { if (e.button !== 0) return; e.preventDefault(); e.stopPropagation(); if (gURLBar.view.isOpen) gURLBar.view.close(); else { this.provider.PRIORITY = 0; gURLBar.focus(); gURLBar.startQuery({ allowAutofill: false, }); } }, click(e) { if (e.button === 0) return; var currentURI = this.currentURIlabel, valueIsTyped = this.valueIsTypedlabel; var gBrowserBundle = { GetStringFromName(str) { return ({ "confirmationHint.currentURI.label": currentURI, "confirmationHint.valueIsTyped.label": valueIsTyped, })[str]; } }; var show = eval(`(function ${e.view.ConfirmationHint.show})`); var helper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper); (this.click = e => { if (e.button === 0) return; e.preventDefault(); e.stopPropagation(); if (e.button === 1) { BrowserReload(); return; } var url, mesId; if (!gURLBar.valueIsTyped || !this.copyvalueistyped) url = gURLBar.makeURIReadable(gBrowser.selectedBrowser.currentURI).displaySpec, mesId = "currentURI"; else url = gURLBar.untrimmedValue, mesId = "valueIsTyped"; helper.copyString(url); show.call(ConfirmationHint, this.dropmarker, mesId, { hideArrow: true }); })(e); }, handleEvent(e) { this[e.type](e); }, }).init(this);
Отредактировано sandro79 (29-09-2021 10:37:27)
Отсутствует
Кто-нибудь может помоч мне с этой проблемой?
Дополню: такая же проблема имеется с этим вариантом скрипта и с кастомной кнопкой с аналогичным функционалом.
Отсутствует
Kot DaVinci
Можно после строки, содержащей node.setAttribute("label", label);
добавить строку, содержащую node.setAttribute("closemenu", "none");
Лучше во второй код, потому что там "таблетка от сепараторов" прописана,
ну, если фича "исключения скрытых" не мешает, конечно.
Отсутствует
Dumby, спасибо. Работает как надо.
Отсутствует
egorsemenov06
Речь про initKeyEvent? Ну, конструктор нам рекоммендуют.
// var evt = node.ownerDocument.createEvent("KeyboardEvent"); // evt.initKeyEvent( // "keypress", true /*bubbles*/, true /*cancelable*/, node.ownerDocument.defaultView, // e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, // e.keyCode, e.charCode // ); var evt = new node.ownerGlobal.KeyboardEvent( "keypress", {bubbles: true, cancelable: true, ...e} );
Отсутствует
Vitaliy V.
Сделайте пожалуйста, что бы набранный текст удалялся автоматически после скрытия панели поиска.
Add, и если возможно, то объединить с этим скриптом: https://forum.mozilla-russia.org/viewto … 72#p782672
Отредактировано kokoss (06-10-2021 18:19:53)
Win7
Отсутствует
kokoss
Отсутствует
скрытый текст
// if (!this.findbar.hidden)
// this.findbar.close();
if (this.findbar.hidden) return;
this.findbar.clear();
this.findbar.close();
Благодарю
А этот код:
gFindBar.clear();
gFindBar.close();
куда...?
Win7
Отсутствует
куда...?
там ниже функция keydown(e) {...
для комбинаций клавиш Ctrl + F
перед gFindBar.close(); добавить gFindBar.clear();
Отредактировано Vitaliy V. (07-10-2021 15:17:46)
Отсутствует
там ниже функция keydown(e) {...
для комбинаций клавиш Ctrl + F
перед gFindBar.close(); добавить gFindBar.clear();
Я так понимаю что если для этого не использую клави..., то можно удалить этот код:
keydown(e) { if (e.ctrlKey && e.code == "KeyF" && !e.altKey && !e.shiftKey) { if (this.timer != null) { e.preventDefault(); return; } this.timer = setTimeout(() => { this.timer = null; }, 1000); if (window.gFindBarInitialized && !gFindBar.hidden) { e.preventDefault(); gFindBar.clear(); gFindBar.close(); } } },
Win7
Отсутствует
если для этого не использую клави..., то можно удалить этот код:
Нет, один этот код удалять нельзя, только вместе со слушателем, и удалять код не обязательно, достаточно отключить слушатель.
// window.addEventListener("keydown", this, true);
// window.removeEventListener("keydown", this, true);
Отсутствует
Нет, один этот код удалять нельзя.
Я это уже понял...
и удалять код не обязательно, достаточно отключить слушатель.
// window.addEventListener("keydown", this, true);
// window.removeEventListener("keydown", this, true);
Спасибо!
Отредактировано kokoss (07-10-2021 16:09:18)
Win7
Отсутствует