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

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

№15114-12-2021 23:42:17

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

Re: UCF-скрипты на этом форуме

Dumby пишет

следует просто посмотреть как это делает сам браузер, и срисовать себе

С этим я пока не разобрался, хотя не помешало бы такую мелочь самому вычислить.

строго буквально «чтоб он закрывал текущую вкладку» и никак иначе

Да, как раз так и хотел, пункт "Выбрать все вкладки" не использую, и он у меня скрыт стилем. Скрипт собрал, всё работает

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

Выделить код

Код:

CustomizableUI.createWidget({
	id: "Close-Tab",
	label: "Закрыть вкладку",
	tooltiptext: "Закрыть вкладку",
	defaultArea: CustomizableUI.AREA_NAVBAR,
	localized: false,
	onCreated(btn) {
		btn.render = this.render;
		btn._handleClick = this.close;
		btn.setAttribute("image", "chrome://devtools/skin/images/close.svg");
	},
	render() {
		delete this.render;
		this.render();
		this.icon.style.setProperty("padding", "3px", "important");
	},
	close() {
		var gb = this.ownerGlobal.gBrowser;
		gb.removeTab(gb.selectedTab, {animate: true});
	}
});

Благодарю за помощь! :beer:

Отсутствует

 

№15215-12-2021 18:09:11

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

Re: UCF-скрипты на этом форуме

Dumby
Кнопку  "Закрыть другие вкладки" №82 куда лучше подключить, а то она у меня на [firefox] 95 никак не хочет работать?

Отсутствует

 

№15315-12-2021 19:47:29

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 912
UA: Firefox 95.0

Re: UCF-скрипты на этом форуме

У меня кнопка "Закрыть вкладки..." такая, может кому пригодится. Кто-то помогал сделать, закреплённые вкладки, когда удаление слева или другие не удаляет. Я бы сам так не осилил. Работает, ucf у меня старый.

custom_script.js

Выделить код

Код:

// Этот скрипт можно использовать для создания кнопок с помощью CustomizableUI.createWidget
(() => {
    var loadscript = name => {
        try {
            Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${name}`, globalThis, "UTF-8");
        } catch(e) {}
    };
    loadscript("my_buttons.js");
})();


my_buttons.js

Выделить код

Код:

var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
var {console} = Cu.import("resource://gre/modules/Console.jsm", {});
try {
    CustomizableUI.createWidget({
        id: "add-select-close-tabs-app",
        type: "custom",
        tooltiptext: [
            "ЛКМ: Закрыть все вкладки",
            "Shift+ЛКМ: Закрыть другие вкладки",
            "Ctrl+ЛКМ: Закрыть слева",
            "Alt+ЛКМ: Закрыть справа",
        ].join("\n"),
        onBuild: function(document) {
            var toolbarbutton_0 = document.createXULElement("toolbarbutton");
            toolbarbutton_0.id = this.id;
            toolbarbutton_0.tooltipText = this.tooltiptext;
            toolbarbutton_0.label = "Закрыть все вкладки";
            toolbarbutton_0.setAttribute("context", false);
            toolbarbutton_0.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFLSURBVDhPYxg8wD5wy1y7gK1/7AO3/ncI2nq7uOnk3cq20//BuOP07b1Hnt09eurl/6OnXvwB0rOh2hAAphmGU0uOQDRD8ZrN94CaQQZADIFqQwBkzSAcnLTnVkLewWMgnFZy6Ep9z9kr3dMuHoNhqDYEQDeAEIZqQ4Dd937/JwVDtSEANkX4MFQbAmBThA9DtSEANkXIeM/t7/8vz1v9/1590//rE2f8/+pkIQ3VCgHYNMEwSPOLtOT/X1ws/n9xNvv/xRVIO5l9+OxsoQvVjt+AS/PXgDX/vXnt/4/q4v9/b1z9/y0tGmiY6S6odvwGgJwNshmk+f+fP/9/790JcQnQFVDt+A0A+RnsAqDNIM3/Prz//y0lEmTAZah2/OCrvZkM0LnvvqXFgG3+lgzUDAoHZ9N4qBLC4LOriQ7Qxt0gZwMNuQLRzMAAAAEG9BCOlZEaAAAAAElFTkSuQmCC");
            toolbarbutton_0.addEventListener("click", function(event) {
                var win = event.target.ownerDocument.defaultView;
                if (event.button == 0) {
                    if (event.shiftKey) {
                        win.gBrowser.removeAllTabsBut(win.gBrowser.selectedTab);
                    } else if (event.ctrlKey) {
                        var ctab = win.gBrowser.selectedTab, tabs;
                        if (ctab.multiselected)
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.multiselected && !tab.pinned);
                        else
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.pinned);
                        var index = tabs.indexOf(ctab);
                        tabs = tabs.slice(0, (index != -1) ? index : tabs.length);
                        tabs.forEach((tab) => {
                            win.gBrowser.removeTab(tab);
                        });
                    } else if (event.altKey) {
                        var ctab = win.gBrowser.selectedTab, tabs;
                        if (ctab.multiselected)
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.multiselected && !tab.pinned);
                        else
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.pinned);
                        var index = tabs.indexOf(ctab);
                        tabs = tabs.slice((index != -1) ? (index + 1) : 0, tabs.length);
                        tabs.forEach((tab) => {
                            win.gBrowser.removeTab(tab);
                        });
                    }
                else {
                    win.gBrowser.selectAllTabs();
                    win.gBrowser.removeMultiSelectedTabs();
                    }
                }
            }, false);
            toolbarbutton_0.classList.add("toolbarbutton-1");
            toolbarbutton_0.classList.add("chromeclass-toolbar-additional");
            return toolbarbutton_0;
        }
    });
} catch(e) {}


И ещё мне 2 кнопки сделал Vitaliy V. здесь.

Отредактировано xrun1 (15-12-2021 19:49:44)

Отсутствует

 

№15415-12-2021 19:48:55

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

Re: UCF-скрипты на этом форуме

voqabuhe пишет

куда лучше подключить

Что значит лучше?
Либо добавить в custom_script.js или подобный, либо отдельным файлом.
Придумываешь название, создаёшь, и прописываешь в CustomStylesScripts.jsm
(это если использовать встроенный загрузчик)

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

Выделить код

Код:

var UcfStylesScripts = {
    /** ************************▼ Настройки ▼************************ */

    .......

    scriptsbackground: [ // В фоне [System Principal]
        .......

        { path: "closeOtherTabs.js" },
    ],
    /** ************************▲ Настройки ▲************************ */
};

никак не хочет работать

Что значит не хочет работать?
Открывает вкладки вместо того, чтобы закрывать?


id'шник проверь, чтоб уникальный был.
Иконки, кстати, такой как там у тебя может не быть, пропиши свою.
Кэш ещё может залипнуть, закрой браузер и удали папку startupCache руками.

Отсутствует

 

№15515-12-2021 21:18:30

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 329
UA: Firefox 52.0

Re: UCF-скрипты на этом форуме

xrun1 пишет

my_buttons.js

Выделить код

Код:

var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
var {console} = Cu.import("resource://gre/modules/Console.jsm", {});
try {
    CustomizableUI.createWidget({
        id: "add-select-close-tabs-app",
        type: "custom",
        tooltiptext: [
            "ЛКМ: Закрыть все вкладки",
            "Shift+ЛКМ: Закрыть другие вкладки",
            "Ctrl+ЛКМ: Закрыть слева",
            "Alt+ЛКМ: Закрыть справа",
        ].join("\n"),
        onBuild: function(document) {
            var toolbarbutton_0 = document.createXULElement("toolbarbutton");
            toolbarbutton_0.id = this.id;
            toolbarbutton_0.tooltipText = this.tooltiptext;
            toolbarbutton_0.label = "Закрыть все вкладки";
            toolbarbutton_0.setAttribute("context", false);
            toolbarbutton_0.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFLSURBVDhPYxg8wD5wy1y7gK1/7AO3/ncI2nq7uOnk3cq20//BuOP07b1Hnt09eurl/6OnXvwB0rOh2hAAphmGU0uOQDRD8ZrN94CaQQZADIFqQwBkzSAcnLTnVkLewWMgnFZy6Ep9z9kr3dMuHoNhqDYEQDeAEIZqQ4Dd937/JwVDtSEANkX4MFQbAmBThA9DtSEANkXIeM/t7/8vz1v9/1590//rE2f8/+pkIQ3VCgHYNMEwSPOLtOT/X1ws/n9xNvv/xRVIO5l9+OxsoQvVjt+AS/PXgDX/vXnt/4/q4v9/b1z9/y0tGmiY6S6odvwGgJwNshmk+f+fP/9/790JcQnQFVDt+A0A+RnsAqDNIM3/Prz//y0lEmTAZah2/OCrvZkM0LnvvqXFgG3+lgzUDAoHZ9N4qBLC4LOriQ7Qxt0gZwMNuQLRzMAAAAEG9BCOlZEaAAAAAElFTkSuQmCC");
            toolbarbutton_0.addEventListener("click", function(event) {
                var win = event.target.ownerDocument.defaultView;
                if (event.button == 0) {
                    if (event.shiftKey) {
                        win.gBrowser.removeAllTabsBut(win.gBrowser.selectedTab);
                    } else if (event.ctrlKey) {
                        var ctab = win.gBrowser.selectedTab, tabs;
                        if (ctab.multiselected)
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.multiselected && !tab.pinned);
                        else
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.pinned);
                        var index = tabs.indexOf(ctab);
                        tabs = tabs.slice(0, (index != -1) ? index : tabs.length);
                        tabs.forEach((tab) => {
                            win.gBrowser.removeTab(tab);
                        });
                    } else if (event.altKey) {
                        var ctab = win.gBrowser.selectedTab, tabs;
                        if (ctab.multiselected)
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.multiselected && !tab.pinned);
                        else
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.pinned);
                        var index = tabs.indexOf(ctab);
                        tabs = tabs.slice((index != -1) ? (index + 1) : 0, tabs.length);
                        tabs.forEach((tab) => {
                            win.gBrowser.removeTab(tab);
                        });
                    }
                else {
                    win.gBrowser.selectAllTabs();
                    win.gBrowser.removeMultiSelectedTabs();
                    }
                }
            }, false);
            toolbarbutton_0.classList.add("toolbarbutton-1");
            toolbarbutton_0.classList.add("chromeclass-toolbar-additional");
            return toolbarbutton_0;
        }
    });
} catch(e) {}

Интересная кнопочка.
Только немешало бы в неё добавить "защиту от дурака" на все действия - подтверждение на закрытие вкладок.


Что-то типа такого:

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

untitled-4.png
untitled-2.png
untitled-3.png

Отредактировано unter_officer (15-12-2021 21:20:15)


«The Truth Is Out There»

Отсутствует

 

№15616-12-2021 00:05:28

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

Re: UCF-скрипты на этом форуме


Win7

Отсутствует

 

№15716-12-2021 02:14:46

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

Re: UCF-скрипты на этом форуме

Dumby
Посмотрите пожалуйста, я правильно отредактировал?

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

Выделить код

Код:

try {
    CustomizableUI.createWidget({
        id: "additional-toolbars-button",
        type: "custom",
        label: "Доп. панели",
        tooltiptext: [
            "ЛКМ: Переключить верт. панель",
            "ПКМ: Переключить доп. панель"
        ].join("\n"),
        localized: false,
        onBuild(doc) {
            var trbn = doc.createXULElement("toolbarbutton");
            trbn.id = this.id;
            trbn.tooltipText = this.tooltiptext;
            trbn.label = this.label;
            trbn.className = "toolbarbutton-1 chromeclass-toolbar-additional";
            trbn.setAttribute("context", false);
            trbn.setAttribute("image", "chrome://user_chrome_files/content/custom_styles/svg/layer-visible-off.svg");
            trbn.addEventListener("click", function(e) {
                var pref = "browser.add.toolbars.visibility";
                if (e.button == 0) {
                    e.preventDefault();
                    e.stopPropagation();
                    CustomizableUI.setToolbarVisibility("ucf-additional-vertical-bar", doc.querySelector("#ucf-additional-vertical-bar").collapsed);
                } else if (e.button == 2) {
                    e.preventDefault();
                    e.stopPropagation();
                    CustomizableUI.setToolbarVisibility("ucf-additional-top-bar", doc.querySelector("#ucf-additional-top-bar").collapsed);
                }
            }, false);
            return trbn;
        },
    });
} catch(e) {}

Отсутствует

 

№15816-12-2021 05:01:45

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 912
UA: Firefox 95.0

Re: UCF-скрипты на этом форуме

unter_officer
Для меня такое сделать нереально. :) Не представляю, как в кнопку прикрутить confirm()... Да и не нужно. Кнопка "Восстановить" из расширения ATB Vitaliy V. восстанавливает все закрытые вкладки моей кнопкой. Если сразу озаботиться, конечно.
kokoss
Я ещё для боковой панели менял кнопку "Закладки" для экономии места, вдруг пригодится.

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

Заменить в user_chrome.js кнопку с id: "add-view-bookmarks-sidebar-button". Ещё раз повторюсь, ucf у меня старый.

Выделить код

Код:

try {
                CustomizableUI.createWidget({
                    id: "add-view-bookmarks-sidebar-button",
                    type: "custom",
                    label: "Закладки Библиотека История",
                    tooltiptext: "ЛКМ: Показать / Скрыть Закладки\nСКМ: Открыть Библиотеки в табе\nПКМ: Показать / Скрыть Историю",
                    localized: false,
                    onBuild: function(doc) {
                        var win = doc.defaultView;
                        var trbn_0 = doc.createElementNS(ns_xul, "toolbarbutton");
                        trbn_0.id = "add-view-bookmarks-sidebar-button";
                        trbn_0.className = "toolbarbutton-1 chromeclass-toolbar-additional";
                        trbn_0.setAttribute("label", "Закладки Библиотека История");
                        trbn_0.setAttribute("context", "false");
                        trbn_0.setAttribute("tooltiptext", "ЛКМ: Показать / Скрыть Закладки\nСКМ: Открыть Библиотеки в табе\nПКМ: Показать / Скрыть Историю");
                        trbn_0.addEventListener("click", function(e) {
                            if (e.button == 0) {
                                if ("SidebarUI" in win)
                                    win.SidebarUI.toggle("viewBookmarksSidebar");
                                else if ("toggleSidebar" in win)
                                    win.toggleSidebar("viewBookmarksSidebar");
                            }
                            else if (e.button == 1) {
                                var url="chrome://browser/content/places/places.xhtml";
                                win.SidebarUI.hide();
                                /* Для CB, открывает "История" в окне "Библиотека"
                                PlacesCommandHook.showPlacesOrganizer('History'); */
                                win.gBrowser.selectedTab = win.gBrowser.addTrustedTab(url);
                            }
                            else if (e.button == 2) {
                                if ("SidebarUI" in win)
                                    win.SidebarUI.toggle("viewHistorySidebar");
                                else if ("toggleSidebar" in win)
                                    win.toggleSidebar("viewHistorySidebar");
                            }
                        });
                        return trbn_0;
                    }
                });
            } catch(e) {}

Отсутствует

 

№15916-12-2021 12:20:30

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

Re: UCF-скрипты на этом форуме

_zt пишет

Посмотрите пожалуйста, я правильно отредактировал?

Не люблю я вопросы про «правильно», откуда мне знать что есть правильно.
Если работает, и страшных косяков нет (а их нет) — значит правильно.

скрытый текст
И, потом, не всегда понятен замысел, вот смотришь и думаешь,
что здесь имелось в виду? Если судить по себе, то далеко не всё пишется
с каким-то смыслом, иногда просто от балды, первое что в голову придёт.


Вот, например, в коде определяется переменная pref, но нигде не используется.
Или зачем e.preventDefault(); e.stopPropagation(); я же не знаю.
Превент может использоваться для предотвращения появления контекстного
меню при ПКМ (Windows), но там уже решено, что этого контекстного меню
не будет совсем никогда, поскольку установлен атрибут "context".


Или tooltiptext массивом. Когда там целая батарея подсказочных строк, то имеет смысл.
А парочку вполне можно и одной строкой записать. Это не вопрос правильности,
а вопрос предпочтения. Вот там widget создаётся как type: "custom", не знаю,
может это как-то внутренне оптимальнее, но чего не сделаешь, чтоб записать попроще, типа

Выделить код

Код:

(async () => CustomizableUI.createWidget({
	label: "Доп. панели",
	tooltiptext: "ЛКМ: Переключить верт. панель\nПКМ: Переключить доп. панель",

	id: "additional-toolbars-button",
	localized: false,
	onCreated(btn) {
		btn.toggleAttribute("context");
		btn.setAttribute("image", "chrome://user_chrome_files/content/custom_styles/svg/layer-visible-off.svg");
	},
	0: "ucf-additional-vertical-bar",
	2: "ucf-additional-top-bar",
	onClick(e) {
		var id = this[e.button];
		id && CustomizableUI.setToolbarVisibility(id, e.view.document.getElementById(id).collapsed);
	}
}))();

Отсутствует

 

№16016-12-2021 15:06:02

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

Re: UCF-скрипты на этом форуме

Dumby
По мне судить не надо, судите по Vitaliy V., это его код.
Я в скриптах разбираюсь на уровне  - что нибудь добавить/удалить по доступному примеру. (Сколько раз это повторить надо?) Поэтому и спросил. Спасибо за готовый код, это то что в итоге мне нужно было.

Отсутствует

 

№16116-12-2021 15:31:27

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 329
UA: Firefox 52.0

Re: UCF-скрипты на этом форуме

xrun1 пишет

my_buttons.js

Выделить код

Код:

var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
var {console} = Cu.import("resource://gre/modules/Console.jsm", {});
try {
    CustomizableUI.createWidget({
        id: "add-select-close-tabs-app",
        type: "custom",
        tooltiptext: [
            "ЛКМ: Закрыть все вкладки",
            "Shift+ЛКМ: Закрыть другие вкладки",
            "Ctrl+ЛКМ: Закрыть слева",
            "Alt+ЛКМ: Закрыть справа",
        ].join("\n"),
        onBuild: function(document) {
            var toolbarbutton_0 = document.createXULElement("toolbarbutton");
            toolbarbutton_0.id = this.id;
            toolbarbutton_0.tooltipText = this.tooltiptext;
            toolbarbutton_0.label = "Закрыть все вкладки";
            toolbarbutton_0.setAttribute("context", false);
            toolbarbutton_0.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFLSURBVDhPYxg8wD5wy1y7gK1/7AO3/ncI2nq7uOnk3cq20//BuOP07b1Hnt09eurl/6OnXvwB0rOh2hAAphmGU0uOQDRD8ZrN94CaQQZADIFqQwBkzSAcnLTnVkLewWMgnFZy6Ep9z9kr3dMuHoNhqDYEQDeAEIZqQ4Dd937/JwVDtSEANkX4MFQbAmBThA9DtSEANkXIeM/t7/8vz1v9/1590//rE2f8/+pkIQ3VCgHYNMEwSPOLtOT/X1ws/n9xNvv/xRVIO5l9+OxsoQvVjt+AS/PXgDX/vXnt/4/q4v9/b1z9/y0tGmiY6S6odvwGgJwNshmk+f+fP/9/790JcQnQFVDt+A0A+RnsAqDNIM3/Prz//y0lEmTAZah2/OCrvZkM0LnvvqXFgG3+lgzUDAoHZ9N4qBLC4LOriQ7Qxt0gZwMNuQLRzMAAAAEG9BCOlZEaAAAAAElFTkSuQmCC");
            toolbarbutton_0.addEventListener("click", function(event) {
                var win = event.target.ownerDocument.defaultView;
                if (event.button == 0) {
                    if (event.shiftKey) {
                        win.gBrowser.removeAllTabsBut(win.gBrowser.selectedTab);
                    } else if (event.ctrlKey) {
                        var ctab = win.gBrowser.selectedTab, tabs;
                        if (ctab.multiselected)
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.multiselected && !tab.pinned);
                        else
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.pinned);
                        var index = tabs.indexOf(ctab);
                        tabs = tabs.slice(0, (index != -1) ? index : tabs.length);
                        tabs.forEach((tab) => {
                            win.gBrowser.removeTab(tab);
                        });
                    } else if (event.altKey) {
                        var ctab = win.gBrowser.selectedTab, tabs;
                        if (ctab.multiselected)
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.multiselected && !tab.pinned);
                        else
                            tabs = win.gBrowser.visibleTabs.filter(tab => !tab.pinned);
                        var index = tabs.indexOf(ctab);
                        tabs = tabs.slice((index != -1) ? (index + 1) : 0, tabs.length);
                        tabs.forEach((tab) => {
                            win.gBrowser.removeTab(tab);
                        });
                    }
                else {
                    win.gBrowser.selectAllTabs();
                    win.gBrowser.removeMultiSelectedTabs();
                    }
                }
            }, false);
            toolbarbutton_0.classList.add("toolbarbutton-1");
            toolbarbutton_0.classList.add("chromeclass-toolbar-additional");
            return toolbarbutton_0;
        }
    });
} catch(e) {}

Dumby
Возможно ли в эту кнопку, на все действия, прикрутить горячие клавиши для клавиатуры, например Shift+1, Shift+2, Shift+3, Shift+4 ?


«The Truth Is Out There»

Отсутствует

 

№16216-12-2021 16:40:01

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

Re: UCF-скрипты на этом форуме

Dumby пишет

Что значит лучше?
Либо добавить в custom_script.js или подобный, либо отдельным файлом.
Придумываешь название, создаёшь, и прописываешь в CustomStylesScripts.jsm
(это если использовать встроенный загрузчик)

Типа про это как раз и спрашивал, в какой из них лучше, в чём разница?

Что значит не хочет работать?
Открывает вкладки вместо того, чтобы закрывать?

В смысле, что она ваще не появлялась.

id'шник проверь, чтоб уникальный был.

Ага, это и было причиной, видно с чем-то совпало, после изменения id, кнопка появилась и работает. Спасибо.

Отсутствует

 

№16316-12-2021 17:04:23

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

Re: UCF-скрипты на этом форуме

xrun1 пишет

Я ещё для боковой панели менял кнопку "Закладки" для экономии места, вдруг пригодится.
скрытый текст

И как это работает? А то у меня в [firefox] 95 не работает!

Отредактировано kokoss (16-12-2021 17:50:38)


Win7

Отсутствует

 

№16416-12-2021 20:53:59

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

Re: UCF-скрипты на этом форуме

unter_officer пишет

Возможно ли в эту кнопку, на все действия, прикрутить горячие клавиши для клавиатуры, например Shift+1, Shift+2, Shift+3, Shift+4 ?

Обязательно в кнопку?
Это же надо вмешиваться внутрь или цепляться снаружи.
Может сойдёт какой-нибудь аналог отдельным независимым кодом, например
(это для custom_script_win.js, и, я надеюсь, вопрос был не о Firefox 52)

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

Выделить код

Код:

(async anim => {
	var re = /^(?:Digit|Numpad)(1|2|3|4)$/;
	var funcs = {
		1: () => {
			gBrowser.selectAllTabs();
			gBrowser.removeMultiSelectedTabs();
		},
		2: t => gBrowser.removeAllTabsBut(t),
		3: t => gBrowser.removeTabsToTheStartFrom(t, anim),
		4: t => gBrowser.removeTabsToTheEndFrom(t, anim),
	};
	var args = ["keydown", e => {
		if (
			e.ctrlKey || e.altKey || !re.test(e.code) ||
			e.repeat || docShell.isCommandEnabled("cmd_insertText")
		)
			return;

		var num = RegExp.$1;
		if (e.shiftKey || e.code.startsWith("N") && e.getModifierState("NumLock") && e.key != num)
			e.preventDefault(),
			funcs[num](gBrowser.selectedTab);

	}, true];
	addEventListener(...args);
	var id = Symbol(), ucf = ucf_custom_script_win;
	ucf.unloadlisteners.push(id);
	ucf[id] = {destructor: () => removeEventListener(...args)};
})({animate: true});

kokoss пишет

у меня в [firefox] 95 не работает!

Там ns_xul не определён, вот и не работает.
И иконки нет, но это уже мелочь.

Отсутствует

 

№16516-12-2021 22:33:09

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 329
UA: Firefox 52.0

Re: UCF-скрипты на этом форуме

Dumby пишет

Обязательно в кнопку?
Это же надо вмешиваться внутрь или цепляться снаружи.
Может сойдёт какой-нибудь аналог отдельным независимым кодом, например
(это для custom_script_win.js, и, я надеюсь, вопрос был не о Firefox 52)

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

Выделить код

Код:

(async anim => {
	var re = /^(?:Digit|Numpad)(1|2|3|4)$/;
	var funcs = {
		1: () => {
			gBrowser.selectAllTabs();
			gBrowser.removeMultiSelectedTabs();
		},
		2: t => gBrowser.removeAllTabsBut(t),
		3: t => gBrowser.removeTabsToTheStartFrom(t, anim),
		4: t => gBrowser.removeTabsToTheEndFrom(t, anim),
	};
	var args = ["keydown", e => {
		if (
			e.ctrlKey || e.altKey || !re.test(e.code) ||
			e.repeat || docShell.isCommandEnabled("cmd_insertText")
		)
			return;

		var num = RegExp.$1;
		if (e.shiftKey || e.code.startsWith("N") && e.getModifierState("NumLock") && e.key != num)
			e.preventDefault(),
			funcs[num](gBrowser.selectedTab);

	}, true];
	addEventListener(...args);
	var id = Symbol(), ucf = ucf_custom_script_win;
	ucf.unloadlisteners.push(id);
	ucf[id] = {destructor: () => removeEventListener(...args)};
})({animate: true});

Dumby, большое спасибо!


P.S. Вопрос конечно же был не о Firefox 52. :)

Отредактировано unter_officer (16-12-2021 22:34:18)


«The Truth Is Out There»

Отсутствует

 

№16616-12-2021 23:31:48

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

Re: UCF-скрипты на этом форуме

Dumby пишет

Там ns_xul не определён, вот и не работает.
И иконки нет, но это уже мелочь.

Иконку то я прикрутил, только не мог понять почему у него работает, а у меня нет, теперь понятно. Спасибо за подсказку!


Win7

Отсутствует

 

№16717-12-2021 05:23:26

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 912
UA: Firefox 95.0

Re: UCF-скрипты на этом форуме

kokoss
Это была не отдельная кнопка, я правил файл user_chrome.js. А для него иконки уже прописаны в vertical_top_bottom_bar\vertical_top_bottom_bar.css. Из-за этого, наверное, получилась неразбериха.

_zt пишет

По мне судить не надо, судите по Vitaliy V., это его код.

Не, это мой код, он там двумя постами выше. Кнопку делал, когда только-только Vitaliy V. сделал ucf. Делал по аналогии c кнопками, которые уже были в ucf. Поэтому там и type: "custom". А e.preventDefault(); e.stopPropagation(); у меня затесались по старой памяти от CB.:)

Отсутствует

 

№16817-12-2021 14:17:22

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

Re: UCF-скрипты на этом форуме

Может кому пригодится:

кнопка для custom_script.js

Выделить код

Код:

try {
    CustomizableUI.createWidget({
        id: "add-personalization-button-app",
        type: "custom",
        tooltiptext: [
            "ЛКМ: Персонализация",
            "СКМ: about:about",
            "ПКМ: about:support"
        ].join("\n"),
        onBuild: function(document) {
            var toolbarbutton_0 = document.createXULElement("toolbarbutton");

            toolbarbutton_0.id = this.id;
            toolbarbutton_0.tooltipText = this.tooltiptext;
            toolbarbutton_0.label = "Персонализация about:about about:support";
            toolbarbutton_0.image = "chrome://browser/content/robot.ico";

            toolbarbutton_0.setAttribute("context", false);
            toolbarbutton_0.addEventListener("click", function(event) {
                var win = event.target.ownerDocument.defaultView;
                win.SidebarUI.hide();
                if (event.button == 0) {
                    win.gCustomizeMode.enter();
                }
                if (event.button == 1) {
                    win.gBrowser.selectedTab = win.gBrowser.addTrustedTab('about:about');
                }
                if (event.button == 2) {
		    win.gBrowser.selectedTab = win.gBrowser.addTrustedTab('about:support');
                }
            }, false);
            toolbarbutton_0.classList.add("toolbarbutton-1");
            toolbarbutton_0.classList.add("chromeclass-toolbar-additional");
            return toolbarbutton_0;
        }
    });
} catch(e) {}


в [firefox] 95 вроде работает, немного изменил... эту кнопку

Отредактировано kokoss (17-12-2021 18:57:31)


Win7

Отсутствует

 

№16917-12-2021 17:40:44

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 329
UA: Firefox 52.0

Re: UCF-скрипты на этом форуме

Dumby
Если не сложно, не могли бы вы сделать пример-заготовку для подобной кнопки?
untitled-2.png


Что-то вроде нескольких кнопок в одной.


для FF 91.


«The Truth Is Out There»

Отсутствует

 

№17017-12-2021 21:52:07

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

Re: UCF-скрипты на этом форуме

Dumby
Уже порядочно долго использую Ваш скрипт для открытия новой вкладки двойным кликом на панели вкладок.
А можно ещё сделать скрипт, чтоб не происходил захват и перетаскивание окна при одиночном клике на панели вкладок?
А то бывает, как-то дрогнет что ли рука и происходит захват и сдвиг окна. Ну такая опция была и сейчас присутствует в новом Tab Mix Plus.
Очень хотелось бы вернуть эту функцию в виде скрипта

скрытый текст
Tab Mix Plus поставил, посмотрел, ну три небольших скрипта и два дополнения она мне компенсировала.
Но в обычном [firefox] нужен ещё скрипт для работы дополнения и bootstrapLoader.xpi по-любому ставить. В общем отказался, в [nightly] только пока оставил


______.PNG

Отсутствует

 

№17117-12-2021 22:58:01

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 329
UA: Firefox 52.0

Re: UCF-скрипты на этом форуме

sandro79 пишет

А можно ещё сделать скрипт, чтоб не происходил захват и перетаскивание окна при одиночном клике на панели вкладок?

Возможно я ошибаюсь, но вроде это можно реализовать стилем. Что-то типа такого:
ID_ПАНЕЛИ { -moz-window-dragging: no-drag !important; }


«The Truth Is Out There»

Отсутствует

 

№17217-12-2021 23:17:21

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

Re: UCF-скрипты на этом форуме

unter_officer пишет

Возможно я ошибаюсь, но вроде это можно реализовать стилем. Что-то типа такого:

Нет, Вы не ошибаетесь, действительно можно стилем. Спасибо за подсказку :beer:
Сделал стилем, добавил ещё панель закладок, работает прекрасно, вопрос закрыт

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

Выделить код

Код:

#TabsToolbar, #PlacesToolbar {
  -moz-window-dragging: no-drag !important;
}

Отсутствует

 

№17318-12-2021 00:00:55

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

Re: UCF-скрипты на этом форуме

unter_officer пишет

Если не сложно, не могли бы вы сделать пример-заготовку для подобной кнопки?

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

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

Выделить код

Код:

(async () => CustomizableUI.createWidget({
	label: "Some Label",
	tooltiptext: "Some Tooltip Text",

	id: "_some_unique_identifier_",
	localized: false,
	onCreated(btn) {
		btn.setAttribute("type", "menu");
		btn.setAttribute("image", "chrome://global/skin/narrate/headphone-active.svg");

		var doc = btn.ownerDocument;
		var popup = doc.createXULElement("menupopup");
		popup.creator = this;
		popup.toggleAttribute("context");
		popup.setAttribute("oncommand", "creator.cmd(event);");
		popup.setAttribute("oncontextmenu", "hidePopup(); creator.cmd(event);");
		
		for(var item of this.data) {
			if (!item) {
				popup.append(doc.createXULElement("menuseparator"));
				continue;
			}
			var menuitem = popup.appendChild(doc.createXULElement("menuitem"));
			menuitem.linkedItem = item;
			menuitem.setAttribute("label", item.lab || "");
			item.ttt && menuitem.setAttribute("tooltiptext", item.ttt);
			if (item.img)
				menuitem.className = "menuitem-iconic",
				menuitem.setAttribute("image", item.img);
		}
		btn.prepend(popup);
	},
	cmd(e) {
		var it = e.target.linkedItem;
		it && this[it.fnc](e, it.val);
	},
	data: [
		{
			lab: "Пункт 1",
			ttt: "Бла",
			img: "chrome://devtools/skin/images/fox-smiling.svg",
			fnc: "sayBla",
		},
		{
			lab: "Пункт 2",
			ttt: "Трижды Бла",
			img: "chrome://devtools/skin/images/fox-smiling.svg",
			fnc: "sayBla",
			val: 3,
		},
		null, // <= separator
		{
			lab: "Пункт 3",
			fnc: "alertLabel",
		},
		{
			lab: "Пункт 4",
			fnc: "viewImgSource",
			img: "chrome://browser/skin/protections/resolved-breach.svg",
		},
		null,
		{
			lab: "Пункт 5",
			ttt: "Default",
			img: "chrome://browser/skin/preferences/face-sad.svg",
		},
	],
	sayBla(e, val = 1) {
		Services.prompt.alert(null, null, "Бла ".repeat(val));
	},
	alertLabel(e) {
		e.view.alert(e.target.label);
	},
	viewImgSource(e) {
		var gb = e.view.gBrowser;
		gb.selectedTab = gb.addTrustedTab(
			"view-source:" + e.target.image,
			{index: gb.selectedTab._tPos + 1}
		);
	},
	undefined(e) {
		Services.prompt.alert(null, "Method missing!", "event.button = " + e.button);
	}
}))();

Отсутствует

 

№17418-12-2021 00:38:30

unter_officer
Участник
 
Группа: Members
Откуда: Санкт-Петербург
Зарегистрирован: 27-03-2011
Сообщений: 329
UA: Firefox 52.0

Re: UCF-скрипты на этом форуме

Dumby пишет

Короче, лучше бы побольше конкретики.

На многих кнопках вешаются разные действия на клик мыши с модификаторами (Shift+ЛКМ, Ctrl+ПКМ и тому подобное).
Мне тяжеловато запоминать все эти варианты, особенно когда кнопок много, а с моим неважным зрением постоянно вглядываться во всплывающие подсказки тоже тяжело.


Мне проще сделать одну кнопку и добавлять в неё по мере необходимости нужные действия.
Абстрактный пример: "Пункт 1 - Закрыть все вкладки", "Пункт 2 - Восстановить закрытую вкладку", "Пункт 3 - Открыть консоль браузера" и т.д. и т.п.




P.S. Dumby, большое спасибо за кнопку.

Отредактировано unter_officer (18-12-2021 15:16:58)


«The Truth Is Out There»

Отсутствует

 

№17518-12-2021 03:11:15

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 912
UA: Firefox 95.0

Re: UCF-скрипты на этом форуме

Случайно поднял глаза и заметил. ;) В кнопке для адресной строки "Копировать ссылку" в [firefox] 95 сменился значок. Теперь такой iconURL: "chrome://global/skin/icons/link.svg"

Отсутствует

 

Board footer

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