Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№7624-09-2021 22:56:50

_zt
Участник
 
Группа: Members
Зарегистрирован: 10-11-2014
Сообщений: 1647
UA: Firefox 78.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V.
Искажен. В общем, ничего не понял, но спасибо что исправили. Я там ничего не менял в пространствах имен. В общем, спасибо.

Отсутствует

 

№7725-09-2021 12:16:33

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 91.0

Re: UCF - ваши кнопки, скрипты…

Dumby
Помогите пожалуйста. Использую Ваш скрипт закрытия всех вкладок кроме активной, только со своей иконкой

скрытый текст

Выделить код

Код:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACNUlEQVQ4jY2TT08aQRjG59LL7mk/gxdvXmw/QD+MX6AePNhk0jThMGljEzLpxio0arQWMGpqomXBP7TQ3YpQ5J8CQf65C7vUKK61Hp4eFhMwBPskc5iZzO9987zPENIV9WyOTkxMPCGPaJIxcdq7NdJ3SJcj4+/jdns+WvMPg1AqC+5vujKjdhrUEx4lhBDyciE0NqPZbU8G8BWAz9pgyCRj4oKqK0t5wJsF5MPr+rS8NkKmOJfc301tMQesl4BQFdhJ9UMolYX1pK5slYGNEuAvAF7VCFJKBUIIIS7OpYW4pX4pA/t14KgJRLMOhDEm7mZ1JaYDB3UgXAXWkkaQUlnoa9HFubSRMrXoOXBsAuVLIFGoBuJFXcn/BtIWkGgBoUxP5YdycS7tnVhqvg3UO0D7D9CygUbHAaoFI0hlefDje3HOpWTZ1Jo2cHMH2HeAeQMkS0Mq94oxJv4qG4p5A1z9ddb5NRDL1XyP5oTKshA71ZXiBVC5dFpv2kDlCshYwHZqCIQxJm4f64pmOGalLUAt6ErqzFKLF0CyBUQagO9wAIRSWViN68rOGRCqOeNSum5zzqUfRVP7aQDhGrBZAuaiPZBJxsS5mK6snDgB2SgBgUT/nDnnUjBnqV8rQKAIfMwCM3tdyOul/Wfuo9vObNqJqEcd7LaLc8mfNLVPp8CHNPBWta0X8qbzH+jq4fM32m3n3cGAhD2AzGuWyuO2RZcj432XU4u7T/9nzi7OpVcrobH7/T9AEdt1RBP8kgAAAABJRU5ErkJggg==

Недавно решил заменить её на svg из допротоновских версий chrome://browser/skin/panel-icon-cancel.svg
Закинул в папку svg комплекта эту иконку, чтоб белой была на тёмном фоне без надобности включения svg.context-properties.content.enabled.
Прописал путь к иконке chrome://user_chrome_files/content/custom_styles/svg/panel-icon-cancel.svg, иконка появилась, всё работает нормально
скрытый текст

Выделить код

Код:

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);
	}
});

Но вот только маленькая она стала, меньше чем та что была. Я её чуть увеличил стилем
скрытый текст
Image_001.png

Выделить код

Код:

#Close-Tabs-button > image {
    padding: 2px !important;
}

Может можно добавить как-то тоже стиль выше в код скрипта, чтоб всё в одном месте было?

Отсутствует

 

№7825-09-2021 13:33:51

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2256
UA: Firefox 68.0

Re: UCF - ваши кнопки, скрипты…

sandro79
У меня снова предложение чуть поперёк просьбы.
Там <svg> 32x32, а <path> 20x20 по-центру,
то есть как бы отступ 6px со всех сторон (поэтому выглядит маленькой).


Но можно во viewBox подогнать x, y, width и height.
Допустим, максимально. Меняем в самой svg'ке viewBox="0 0 32 32"
на viewBox="6 6 20 20" и отступа не будет совсем, тогда будет выглядеть крупнее.
Если положительного результата не получится, дай знать, полезу в js-код.

Отсутствует

 

№7925-09-2021 14:24:57

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 91.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

Допустим, максимально. Меняем в самой 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, теперь буду хоть это знать.

Отсутствует

 

№8025-09-2021 15:02:35

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2256
UA: Firefox 68.0

Re: UCF - ваши кнопки, скрипты…

sandro79 пишет

сдвигается вверх и влево

Вот все центрированные варианты

скрытый текст

Выделить код

Код:

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)

Отсутствует

 

№8125-09-2021 15:26:46

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 91.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

Вот все центрированные варианты

Спасибо, это тоже мне может пригодится в процессе экспериментов в дальнейшем. Пятый и шестой вариант, ну почти подходят.
Если бы не стиль с паддингом, где самое то получилось, как мне показалось, можно было и по такому способу поменять размер.

Допустим, в атрибут style. Может не сработать, если user или agent стилями приколочено, тогда снова дай знать

Отлично всё, сработало! Теперь один в один. Огромное Вам Спасибо за помощь :beer:

Отсутствует

 

№8225-09-2021 15:48:41

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2256
UA: Firefox 68.0

Re: UCF - ваши кнопки, скрипты…

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"

Отсутствует

 

№8325-09-2021 16:20:21

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 91.0

Re: UCF - ваши кнопки, скрипты…

Dumby пишет

Всё таки проверил дробные числа. Похоже работает. Вот с шагом в одну десятую. Ну, это я уже просто так, на интерес

Да, это работает. viewBox="4.7 4.7 22.6 22.6" подошло идеально, ну я не увидел визуально разницы. Спасибо Большое за таблицу. Тоже пригодится в дальнейшем.
Я ещё вчера заменил кнопки для окна загрузок и соответственно библиотеки на эту же(panel-icon-cancel.svg) и panel-icon-retry.svg из 78 [firefox], и там они тоже мелковаты получились, да и в 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)

Отсутствует

 

№8426-09-2021 18:43:42

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 92.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V.
А как теперь тултипы подключить №10124?

Отсутствует

 

№8526-09-2021 19:24:51

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 93.0

Re: UCF - ваши кнопки, скрипты…

voqabuhe
раскомментируйте эту строку https://github.com/VitaliyVstyle/Vitali … ts.jsm#L16
стиль добавляйте соответственно в custom_styles_all_agent.css

Отсутствует

 

№8626-09-2021 20:10:00

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 92.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V.
Спасибо, подключились.

Отсутствует

 

№8726-09-2021 20:36:11

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 91.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V.
Спасибо за обновлённый вариант urlbarhistorydropmarker. Тоже его забрал.
В старом варианте пропал фон наведения в 92+ и значок сдвинулся чуть вправо(но я его вернул на место правда), а тут всё с этим в порядке.
Но скрипт для значка "Копировать ссылку" оставлю, привык к нему за три с лишним года.
Виталий, а нельзя ли ещё добавить в urlbarhistorydropmarker действие "Обновить текущую страницу" по СКМ? Вообще было бы супер - три в одном!

Отредактировано sandro79 (26-09-2021 20:37:07)

Отсутствует

 

№8826-09-2021 23:33:02

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 93.0

Re: UCF - ваши кнопки, скрипты…

sandro79
Сомнительное удобство обновлять страницу колесом, но добавил
в принципе можно на другую функцию заменить здесь
                    if (e.button === 1) {
                        BrowserReload();
                        return;
                    }

Отсутствует

 

№8926-09-2021 23:56:00

sandro79
Участник
 
Группа: Members
Зарегистрирован: 15-11-2017
Сообщений: 1750
UA: Firefox 92.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

Сомнительное удобство обновлять страницу колесом, но добавил...

Ну да. Но ничего так, вполне удобно. Колесо у меня работает отлично.
Да и хочется чего-то необычного испробовать. Всё работает отлично. Огромное Спасибо :beer:


Добавлю себе в пост, чтоб не потерять, три варианта скрипта: старый с правленным мной под Протон адресом для иконки, новый без обновления по СКМ, и новый с обновлением страницы по СКМ

скрытый текст
browser.urlbar.suggest.history - true
browser.urlbar.suggest.topsites - false
скрытый текст
Допротоновский адрес для иконки chrome://global/skin/icons/arrow-dropdown-16.svg В версиях 92+ этот скрипт лучше не использовать

Выделить код

Код:

(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}&#10;ПКМ: ${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 = `&#10;СКМ: ${this.Mtooltiptext}`;
                if (this.copyurlrightclick) l = `ЛКМ: ${this.Ltooltiptext}`, r = `&#10;ПКМ: ${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)

Отсутствует

 

№9030-09-2021 10:21:31

Kot DaVinci
Участник
 
Группа: Members
Зарегистрирован: 11-10-2020
Сообщений: 18
UA: Firefox 92.0

Re: UCF - ваши кнопки, скрипты…

Кто-нибудь может помоч мне с этой проблемой?
Дополню: такая же проблема имеется с этим вариантом скрипта и с кастомной кнопкой с аналогичным функционалом.

Отсутствует

 

№9130-09-2021 11:39:56

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2256
UA: Firefox 68.0

Re: UCF - ваши кнопки, скрипты…

Kot DaVinci
Можно после строки, содержащей node.setAttribute("label", label);
добавить строку, содержащую node.setAttribute("closemenu", "none");


Лучше во второй код, потому что там "таблетка от сепараторов" прописана,
ну, если фича "исключения скрытых" не мешает, конечно.

Отсутствует

 

№9230-09-2021 16:50:18

Kot DaVinci
Участник
 
Группа: Members
Зарегистрирован: 11-10-2020
Сообщений: 18
UA: Firefox 92.0

Re: UCF - ваши кнопки, скрипты…

Dumby, спасибо. Работает как надо.

Отсутствует

 

№9304-10-2021 18:42:27

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2256
UA: Firefox 68.0

Re: UCF - ваши кнопки, скрипты…

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}
        );


Во второй ничего не смог заметить.

Отсутствует

 

№9406-10-2021 17:32:12

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 1754
UA: Firefox 52.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V.
Сделайте пожалуйста, что бы набранный текст удалялся автоматически после скрытия панели поиска.


Add, и если возможно, то объединить с этим скриптом: https://forum.mozilla-russia.org/viewto … 72#p782672

Отредактировано kokoss (06-10-2021 18:19:53)


Win7

Отсутствует

 

№9507-10-2021 14:42:09

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 94.0

Re: UCF - ваши кнопки, скрипты…

kokoss

скрытый текст
                           // if (!this.findbar.hidden)
                               // this.findbar.close();
                            if (this.findbar.hidden) return;
                            this.findbar.clear();
                            this.findbar.close();

скрытый текст
                        gFindBar.clear();
                        gFindBar.close();

Отсутствует

 

№9607-10-2021 15:05:26

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 1754
UA: Firefox 52.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

скрытый текст
                           // if (!this.findbar.hidden)
                               // this.findbar.close();
                            if (this.findbar.hidden) return;
                            this.findbar.clear();
                            this.findbar.close();

Благодарю :beer:
А этот код:

gFindBar.clear();
gFindBar.close();

куда...?


Win7

Отсутствует

 

№9707-10-2021 15:15:32

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 94.0

Re: UCF - ваши кнопки, скрипты…

kokoss пишет

куда...?

там ниже функция keydown(e) {...
для комбинаций клавиш Ctrl + F
перед gFindBar.close(); добавить gFindBar.clear();

Отредактировано Vitaliy V. (07-10-2021 15:17:46)

Отсутствует

 

№9807-10-2021 15:51:28

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 1754
UA: Firefox 52.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

там ниже функция 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

Отсутствует

 

№9907-10-2021 16:01:06

Vitaliy V.
Участник
 
Группа: Members
Зарегистрирован: 19-09-2014
Сообщений: 2186
UA: Firefox 94.0

Re: UCF - ваши кнопки, скрипты…

kokoss пишет

если для этого не использую клави..., то можно удалить этот код:

Нет, один этот код удалять нельзя, только вместе со слушателем, и удалять код не обязательно, достаточно отключить слушатель.
// window.addEventListener("keydown", this, true);
// window.removeEventListener("keydown", this, true);

Отсутствует

 

№10007-10-2021 16:05:42

kokoss
Участник
 
Группа: Members
Зарегистрирован: 15-02-2018
Сообщений: 1754
UA: Firefox 52.0

Re: UCF - ваши кнопки, скрипты…

Vitaliy V. пишет

Нет, один этот код удалять нельзя.

Я это уже понял...


Vitaliy V. пишет

и удалять код не обязательно, достаточно отключить слушатель.
// window.addEventListener("keydown", this, true);
// window.removeEventListener("keydown", this, true);

Спасибо!

Отредактировано kokoss (07-10-2021 16:09:18)


Win7

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]