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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№160113-06-2024 16:20:53

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

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

Vitaliy V.
В связи с

privacy.clearHistory.cache
privacy.clearHistory.cookiesAndStorage
privacy.clearHistory.historyFormDataAndDownloads

обновите пожалуйста скрипт 24-04-2024 16:46:34
   
Vitaliy V.
А переключение автоскрытия Sidebar Tabs не хотите сделать как раньше было, например по Ctrl+ЛКМ или Ctrl+ПКМ на кнопке?
   
И спасибо за контексты, но .onImage ожидаемо не работает, даже на явных картинках, например здесь на смайликах над полем ответа.
а нет, вру, на аватарках заработал и на иконках Firefox тоже. :beer:

Отредактировано _zt (13-06-2024 16:58:22)

Отсутствует

 

№160213-06-2024 20:40:47

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

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

_zt пишет

обновите пожалуйста скрипт

А добавить в
var itemsToClear = [
"historyFormDataAndDownloads",
"cookiesAndStorage",
...
?

_zt пишет

А переключение автоскрытия Sidebar Tabs не хотите сделать как раньше было, например по Ctrl+ЛКМ или Ctrl+ПКМ на кнопке?

А как раньше было ? В самом Sidebar Tabs не было автоскрытия, а то что у вас стиль и/или скрипт был то там было просто показать/скрыть, наверное этот скрипт можно подправить чтобы работал так же.



Обнаружил баг не баг, но если модуль CustomizableUI вызывается слишком рано при старте, то получаем проблемы при сбросе настроек панелей инструментов

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

Выделить код

Код:

CustomizeMode: TypeError: can't access property "enable", gDefaultTheme is undefined
    _resetUIState resource:///modules/CustomizableUI.sys.mjs:3289
    reset resource:///modules/CustomizableUI.sys.mjs:3248
    reset resource:///modules/CustomizableUI.sys.mjs:4444
    reset resource:///modules/CustomizeMode.sys.mjs:1234
Console.sys.mjs:506


Иправил в user_chrome.js на ленивую загрузку модуля https://github.com/VitaliyVstyle/Vitali … 93d9c6a709
PS: хотя это не ново, помница раньше вообще не загружались кнопки и т.д.

Отредактировано Vitaliy V. (13-06-2024 21:06:28)

Отсутствует

 

№160313-06-2024 21:47:03

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

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

Vitaliy V. пишет

то там было просто показать/скрыть

Нет, не просто

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

Выделить код

Код:

try {(() => {
    var label = "Sidebar Tabs",
    tooltiptext = "ЛКМ              Sidebar Tabs\nShift+ЛКМ   Toggle AutoHide",
    img = "data:image/svg+xml;base64...",
    pref = "extensions.ucf.sidebar_tabs.auto_hide";

    var sidebar_tabs_button = {
        get style() {
            delete this.style;
            return this.style = "data:text/css;charset=utf-8," + encodeURIComponent(`
            #st_toolbox {
                --v-sidebar-min-width: 2px;
                --v-sidebar-min-width-normal: 10px;
                --v-sidebar-max-width: 20em;
                --v-sidebar-transition-delay-show: .3s;
                --v-sidebar-transition-delay-hide: .6s;
                --v-sidebar-transition-duration: .3s;
                /* ********************************************** */

                position: relative !important;
                z-index: 1 !important;
                min-width: var(--v-sidebar-max-width) !important;
                width: var(--v-sidebar-max-width) !important;
                max-width: var(--v-sidebar-max-width) !important;
                overflow: hidden !important;
                opacity: 0 !important;
                --v-sidebar-margin-max-width: calc(-1 * var(--v-sidebar-max-width));
                --v-sidebar-margin-left-locale-dir: 0;
                --v-sidebar-margin-right-locale-dir: var(--v-sidebar-margin-max-width);
                --v-sidebar-transform-locale-dir: -1;
                --v-sidebar-transform-locale-dir-visible: 1;
                margin-left: var(--v-sidebar-margin-left-locale-dir) !important;
                margin-right: var(--v-sidebar-margin-right-locale-dir) !important;
                transform: translateX(calc(var(--v-sidebar-transform-locale-dir) * (var(--v-sidebar-max-width) - var(--v-sidebar-min-width)))) !important;
                transition-timing-function: linear, step-start !important;
                transition-delay: var(--v-sidebar-transition-delay-hide), calc(var(--v-sidebar-transition-delay-hide) + var(--v-sidebar-transition-duration)) !important;
                transition-duration: var(--v-sidebar-transition-duration), 0s !important;
                transition-property: transform, opacity !important;
                border-inline-end: 1px solid var(--chrome-content-separator-color, rgba(127,127,127,.5)) !important;
            }

            *|*:root[sidebar_tabs_right="true"] #st_toolbox {
                border-inline-start: 1px solid var(--chrome-content-separator-color, rgba(127,127,127,.5)) !important;
                border-inline-end: none !important;
            }

            *|*:root[sidebar_tabs_right="true"] #st_toolbox,
            #st_toolbox:-moz-locale-dir(rtl) {
                --v-sidebar-margin-left-locale-dir: var(--v-sidebar-margin-max-width);
                --v-sidebar-margin-right-locale-dir: 0;
                --v-sidebar-transform-locale-dir: 1;
                --v-sidebar-transform-locale-dir-visible: -1;
            }

            *|*:root[sidebar_tabs_right="true"] #st_toolbox:-moz-locale-dir(rtl) {
                --v-sidebar-margin-left-locale-dir: 0;
                --v-sidebar-margin-right-locale-dir: var(--v-sidebar-margin-max-width);
                --v-sidebar-transform-locale-dir: -1;
                --v-sidebar-transform-locale-dir-visible: 1;
            }

            *|*:root[sizemode="normal"] #st_toolbox {
                --v-sidebar-min-width: var(--v-sidebar-min-width-normal) !important;
            }

            #st_toolbox:hover,
            #st_toolbox[sidebardrag] {
                transform: translateX(0px) !important;
                opacity: 1 !important;
                transition-delay: var(--v-sidebar-transition-delay-show) !important;
            }

            *|*:root[v_vertical_bar_visible][v_vertical_bar_start="true"][sidebar_tabs_right="false"] #st_toolbox,
            *|*:root[v_vertical_bar_visible][v_vertical_bar_start="false"][sidebar_tabs_right="true"] #st_toolbox {
                transform: translateX(calc(var(--v-sidebar-transform-locale-dir-visible) * var(--v-vertical_bar_width, 0px))) !important;
                opacity: 1 !important;
                transition-delay: 0s !important;
            }

            #browser > #st_splitter {
                display: none !important;
            }
            `);
        },
        loadstyle(win) {
            try {
                win.windowUtils.loadSheetUsingURIString(this.style, win.windowUtils.USER_SHEET);
            } catch (e) {}
        },
        removestyle(win) {
            try {
                win.windowUtils.removeSheetUsingURIString(this.style, win.windowUtils.USER_SHEET);
            } catch (e) {}
        },
    };
    CustomizableUI.createWidget({
        id: "sidebar_tabs_button",
        label: label,
        tooltiptext: tooltiptext,
        defaultArea: CustomizableUI.AREA_NAVBAR,
        localized: false,
        onBeforeCreated(doc) {
            if (Services.prefs.getBoolPref(pref, true))
                sidebar_tabs_button.loadstyle(doc.defaultView);
        },
        onCreated: function(btn) {
            btn.style.setProperty("list-style-image", `url("${img}")`);
        },
        onCommand: function(e) {
            if (!e.shiftKey)
                e.target.sidebar_tabs_toggle();
            else {
                let prf = Services.prefs.getBoolPref(pref, true),
                loadremove = !prf ? "loadstyle" : "removestyle";
                Services.prefs.setBoolPref(pref, !prf);
                for (let win of CustomizableUI.windows)
                    sidebar_tabs_button[loadremove](win);
            }
        }
    });
})();} catch(e) {}

Лучше встроить, дабы сущности не плодить.
   
Еще бы кнопочки добавить в историю и закладки "Свернуть все папки". Типа этих. Опять же для сокращения сущностей. "Развернуть все папки" не особо нужны, а вот "свернуть" полезные.
   

Vitaliy V. пишет

А добавить в
var itemsToClear = [

Да вроде работает, по крайней мере куки и историю удаляет.
Я почему то думал, что там к privacy.cpd. привязка.

Отредактировано _zt (13-06-2024 22:01:25)

Отсутствует

 

№160413-06-2024 22:37:45

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

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

_zt пишет

Нет, не просто

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

_zt пишет

кнопочки добавить в историю и закладки "Свернуть все папки". Типа этих

Ну тут видимо лучше отдельные скрипты использовать это другие документы chrome://browser/content/places/(bookmarksSidebar | historySidebar).xhtml
а Sidebar Tabs только загружает эти документы но работает в основном chrome://browser/content/browser.xhtml

Отредактировано Vitaliy V. (13-06-2024 22:54:21)

Отсутствует

 

№160513-06-2024 23:06:35

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

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

Vitaliy V.
Как для обычного, т.е. если я включу через этот скрипт автоскрытие, то автооткрытия не будет?
В общем, не важно, возможность переключения режима полезнее. Подправьте пожалуйста. Тогда можно просто ЛКМ, ПКМ, без модификаторов. ЛКМ - просто открытие/закрытие без изменения вкладки, а ПКМ режим.
   

Vitaliy V. пишет

но работает в основном chrome://browser/content/browser.xhtml

Понятно.

Отредактировано _zt (13-06-2024 23:13:50)

Отсутствует

 

№160614-06-2024 02:25:18

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

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

Как вызвать информацию о странице? win.BrowserPageInfo(); не работает.

Vitaliy V.
Когда-то в боковой панели можно было открывать сайты. С тех пор у меня сохранилась кнопка.
Можно ли сделать так, чтобы сайт открывался в Sidebar Tabs из кнопки (т.е., если закрыт - открылся  Sidebar Tabs на вкладке "Сайты", если открыт - перешёл на таб "Сайты" и открыл сайт)? Я видел пример с Вашим сайтом, но "не вкурил", как это повесить на кнопку, если такое возможно.

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

Выделить код

Код:

try {
    CustomizableUI.createWidget({
        id: "add-decoder-app",
        type: "custom",
        label: "Декодеры",
        tooltiptext: [
            "ЛКМ: Декодер Арт. Лебедева",
            "ПКМ: Универсальный декодер"
        ].join("\n"),
        localized: false,
        onBuild: function(document) {
            var trbn = document.createXULElement("toolbarbutton");
            trbn.id = this.id;
            trbn.tooltipText = this.tooltiptext;
            trbn.label = this.label;
            trbn.setAttribute("context", false);
            trbn.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAD///8AraXnAKWl5wCEe94Ac3PeAHNr1gAhGMYAGBC9ABgIvQAICL0AEAC9AAgAvQAAALUAAAAAAAAAAAAAAAAAiYmJiYmJiYiYmJiYmJiYmYmJiYmJiYmIiZmZmZmZmZmZmZmJiYmJiYkBBjBQBQOGmQEHMFAFA5iJAQdAUAUDh5kBCDBQBQOYiQEIMFAFA4iZAQYwUAUDmImJiYmJiYmJmJiYmJiYmJiJiYmJiYmJiZiYmJiYmJiYiYmJiYmJiYkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=");
            trbn.addEventListener("click", function(event) {
                var win = event.target.ownerDocument.defaultView;
                win.SidebarController.hide();
                if (event.button == 0) {
                    win.gBrowser.selectedTab = win.gBrowser.addWebTab("https://www.artlebedev.ru/decoder/");
                }
                if (event.button == 2) {
                    win.gBrowser.selectedTab = win.gBrowser.addWebTab("https://2cyr.com/decode/");
                }
            }, false);
            trbn.classList.add("toolbarbutton-1");
            trbn.classList.add("chromeclass-toolbar-additional");
            return trbn;
        }
    });
} catch(e) {}

Отсутствует

 

№160714-06-2024 11:07:06

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

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

xrun1 пишет

Как вызвать информацию о странице? win.BrowserPageInfo(); не работает.

Попробуйте так: win.BrowserCommands.pageInfo();


«The Truth Is Out There»

Отсутствует

 

№160814-06-2024 13:31:09

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

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

unter_officer
Спасибо, одной проблемой меньше!:beer:

Отсутствует

 

№160914-06-2024 20:24:48

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

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

_zt пишет

если я включу через этот скрипт автоскрытие, то автооткрытия не будет?

В скрипте Sidebar Tabs должно быть AUTO_HIDE = false, если true то не сможете включить обычный режим.
также не менять ID = "ucf_sidebar_tabs"
С данным скриптом будет только "урезанное" автоскрытие, скрипт удаляет оригинальную кнопку

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

Выделить код

Код:

(async (
    id = "ucf_sidebar_tabs_button",
    label = "Sidebar Tabs",
    tooltiptext = "ЛКМ: Открыть / Закрыть\nControl + ЛКМ: Отключить / Включить\nСКМ: Отключить / Включить\nПКМ: Переключить AutoHide",
    img = "resource://ucf_sidebar_tabs",
    pref = "extensions.ucf.sidebar_tabs.auto_hide",

    sidebar_tabs = {
        get style() {
            delete this.style;
            return this.style = `data:text/css;charset=utf-8,${encodeURIComponent(`
            #browser > #st_toolbox {
                --v-sidebar-min-width: 10px;
                --v-sidebar-transition-delay-show: .3s;
                --v-sidebar-transition-delay-hide: 2s;
                --v-sidebar-transition-duration: .2s;
                /* ********************************************** */

                position: relative !important;
                z-index: 2 !important;
                min-width: var(--v-sidebar-tabs-width) !important;
                width: var(--v-sidebar-tabs-width) !important;
                max-width: var(--v-sidebar-tabs-width) !important;
                overflow: hidden !important;
                opacity: 0 !important;
                --v-sidebar-margin-max-width: calc(-1 * var(--v-sidebar-tabs-width));
                --v-sidebar-transform-locale-dir: -1;
                --v-sidebar-transform-locale-dir-visible: 1;
                margin-inline-start: 0 !important;
                margin-inline-end: var(--v-sidebar-margin-max-width) !important;
                transform: translateX(calc(var(--v-sidebar-transform-locale-dir) * (var(--v-sidebar-tabs-width) - var(--v-sidebar-min-width)))) !important;
                &[sidebar_tabs_auto_hide] {
                    transition-timing-function: linear, step-start, linear !important;
                    transition-delay: var(--v-sidebar-transition-delay-hide), calc(var(--v-sidebar-transition-delay-hide) + var(--v-sidebar-transition-duration)), 0s !important;
                    transition-duration: var(--v-sidebar-transition-duration), 0s, .2s !important;
                    transition-property: transform, opacity, margin-top !important;
                }
                &[sidebar_tabs_auto_hide][sidebar_tabs_visible="hidden"] {
                    transition-delay: 0s, var(--v-sidebar-transition-duration), 0s !important;
                }
                :root[sidebar_tabs_start="false"] & {
                    margin-inline-start: var(--v-sidebar-margin-max-width) !important;
                    margin-inline-end: 0 !important;
                }
                :root[sidebar_tabs_start="false"]:-moz-locale-dir(ltr) &,
                :root[sidebar_tabs_start="true"]:-moz-locale-dir(rtl) & {
                    --v-sidebar-transform-locale-dir: 1;
                    --v-sidebar-transform-locale-dir-visible: -1;
                }
                &[sidebar_tabs_auto_hide]:hover {
                    transform: translateX(0px) !important;
                    opacity: 1 !important;
                    transition-delay: var(--v-sidebar-transition-delay-show), var(--v-sidebar-transition-delay-show), 0s !important;
                }
                &[sidebar_tabs_auto_hide][sidebar_tabs_visible^="visible"] {
                    transform: translateX(0px) !important;
                    opacity: 1 !important;
                    transition-delay: 0s !important;
                }
                :root[v_vertical_bar_start="true"][sidebar_tabs_start="true"]:is([v_vertical_bar_visible="visible"],[v_vertical_bar_sidebar="true"]) &[sidebar_tabs_auto_hide],
                :root[v_vertical_bar_start="false"][sidebar_tabs_start="false"]:is([v_vertical_bar_visible="visible"],[v_vertical_bar_sidebar="true"]) &[sidebar_tabs_auto_hide] {
                    transform: translateX(calc(var(--v-sidebar-transform-locale-dir-visible) * var(--v-vertical-bar-width, 0px))) !important;
                    opacity: 1 !important;
                    transition-delay: 0s !important;
                }
                :root[v_vertical_bar_visible] & {
                    padding-inline: 0 !important;
                }
            }
            #browser > #st_splitter {
                display: none !important;
            }
        `)}`;
        },
        async loadstyle(win) {
            win.windowUtils.loadSheetUsingURIString(this.style, win.windowUtils.USER_SHEET);
            win.setTimeout(() => win.ucf_custom_script_win.ucf_sidebar_tabs.toolbox.setAttribute("sidebar_tabs_auto_hide", "true"), 0);
        },
        async removestyle(win) {
            win.windowUtils.removeSheetUsingURIString(this.style, win.windowUtils.USER_SHEET);
            win.ucf_custom_script_win.ucf_sidebar_tabs.toolbox.removeAttribute("sidebar_tabs_auto_hide");
        },
        showHide(win) {
            var st = win.ucf_custom_script_win.ucf_sidebar_tabs;
            if (!st.toolbox.hasAttribute("sidebar_tabs_auto_hide")) {
                st.toggle();
                return;
            }
            st.st_vbox_container ||= st.toolbox;
            if (!st._open && st._visible) {
                st.isPanel = false;
                st.hideToolbar(true);
            }
            st.showHide();
            if (!st._visible)
                win.setTimeout(() => st.toolbox.removeAttribute("sidebar_tabs_visible"), 0);
        },
    },
) => CustomizableUI.createWidget({
    id,
    label,
    tooltiptext,
    defaultArea: CustomizableUI.AREA_NAVBAR,
    localized: false,
    onBeforeCreated_(doc) {
        if (Services.prefs.getBoolPref(pref, true))
            sidebar_tabs.loadstyle(doc.defaultView);
    },
    onBeforeCreated(doc) {
        this.onBeforeCreated = this.onBeforeCreated_;
        this.onBeforeCreated_(doc);
        CustomizableUI.destroyWidget("ucf_sidebar_tabs");
    },
    onCreated(btn) {
        btn.style.setProperty("list-style-image", `url("${img}")`);
        btn.setAttribute("context", "");
        var st = btn.ownerGlobal.ucf_custom_script_win.ucf_sidebar_tabs;
        btn.checked = st._open;
        st.button = btn;
        var func = st.mouseup.toString();
        Services.scriptloader.loadSubScript(`data:charset=utf-8,${encodeURIComponent(`this.mouseup = ${func.replace(/^(async\s)?.*?\(/, '$1function mouseup(')
            .replace(/\}$/g, 'setTimeout(() => this.toolbox.removeAttribute("sidebar_tabs_visible"), 0);}')}`)}`, st);
    },
    onClick(e) {
        switch (e.button) {
            case 0:
                if (!e.getModifierState("Control"))
                    sidebar_tabs.showHide(e.view);
                else
                    e.view.ucf_custom_script_win.ucf_sidebar_tabs.toggle();
                break;
            case 1:
                e.view.ucf_custom_script_win.ucf_sidebar_tabs.toggle();
                break;
            case 2:
                let prf = Services.prefs.getBoolPref(pref, true),
                loadremove = !prf ? "loadstyle" : "removestyle";
                Services.prefs.setBoolPref(pref, !prf);
                for (let win of CustomizableUI.windows)
                    sidebar_tabs[loadremove](win);
                break;
        }
    },
}))();

Отредактировано Vitaliy V. (08-08-2024 14:38:26)

Отсутствует

 

№161014-06-2024 23:48:00

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

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

Vitaliy V.
:beer: Спасибо.
Извините за навязчивость. Попробовал, и мысль засвербила.
Можно сделать вместо ЛКМ/СКМ/ПКМ список? Буду добавлять туда сайты и при клике по кнопке выбирать.
Сейчас попробовал, туда удобно добавить переводчики:
https://translate.google.com/?sl=auto&tl=ru&op=translate
https://translate.yandex.ru/
https://www.translate.com/
да много ещё чего можно... какой-нибудь канал онлайн-тв, например.
UPD: И сепаратор, если можно, темы разделять.

Отредактировано xrun1 (15-06-2024 09:27:57)

Отсутствует

 

№161115-06-2024 02:19:21

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 124.0

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

Вопрос: как открыть Историю за месяц в окне Библиотеки ?

win.PlacesCommandHook.showPlacesOrganizer("History"); //покажет только за текущий день


unter_officer пишет

xrun1 пишет

    Как вызвать информацию о странице? win.BrowserPageInfo(); не работает.

Попробуйте так: win.BrowserCommands.pageInfo();

Зачем повторы вопросов? на 64 странице задача уже решена, код совместим для старых/новых версий [firefox]:
BrowserEx("pageInfo"); работают все варианты: BrowserEx("reloadSkipCache") …… BrowserEx("reload")


Ещё в скрипте ucf_hookClicks.js много примеров решений разных вопросов, обсуждавшихся в теме.

Отредактировано Dobrov (15-06-2024 04:43:38)

Отсутствует

 

№161215-06-2024 09:26:23

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

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

Dobrov пишет

работают все варианты:

1. Разница в том, что Вы - разработчик и должны учитывать варианты. А я пользователь последней версии, в которой команда должна работать. Меня не интересует настройка в моём варианте предыдущих версий. В облаке есть бэкапы моих профилей с 80-й версии, установлю и откачусь, если понадобится.
2. Задал поиск в теме "win.BrowserPageInfo();", ничего не нашлось. А если бы нашёл Ваш код, что я из него понял?

Отсутствует

 

№161315-06-2024 13:49:05

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

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

Vitaliy V.
Спасибо, хорошо. А что вы на СКМ хотели повесить, какие мысли были?

Отсутствует

 

№161415-06-2024 16:55:35

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

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

_zt пишет

А что вы на СКМ хотели повесить, какие мысли были?

На ваше усмотрение, можно добавить действие после case 1:

Отредактировано Vitaliy V. (08-08-2024 14:47:53)

Отсутствует

 

№161515-06-2024 19:48:16

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

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

Vitaliy V.
Cпасибо за обе кнопки.
   
URL-bar History Dropmarker отвалился. Поправите?

Отсутствует

 

№161615-06-2024 20:50:09

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

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

_zt
URL-bar History Dropmarker больше года назад исправлен здесь.
Замените только BrowserReload(); на BrowserCommands.reload();

Добавлено 15-06-2024 21:00:08
Vitaliy V.
Чудо чудесное. :beer: Теперь вкладка "Сайты" в Sidebar Tabs у меня активно используется!

Отредактировано xrun1 (15-06-2024 21:00:08)

Отсутствует

 

№161715-06-2024 21:19:00

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

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

xrun1
Проверили на dev?

Отредактировано _zt (15-06-2024 21:20:43)

Отсутствует

 

№161815-06-2024 21:25:08

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

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

_zt
Нет. Пользуюсь только релизами.

Отсутствует

 

№161915-06-2024 21:38:12

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

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

Не работает на 128 dev и [nightly], а на 127 dev и старый код работает, Browser.reload(); никак не мешает. Только уведомления пустые были, просто галочка.

Отредактировано _zt (15-06-2024 21:45:46)

Отсутствует

 

№162016-06-2024 04:22:40

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 124.0

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

Vitaliy V. пишет

Решил Sidebar Tabs в виде юзер скрипта добавить в UCF

Vitaliy V. или Dumby – кнопка-меню для Sidebar Tabs неудобна – адреса не изменить ! :(
Просьба: в меню любой закладки на PlacesToolbarItems добавить «Открыть закладку в Sidebar Tabs»

Отсутствует

 

№162116-06-2024 19:48:43

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

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

Dobrov пишет

добавить

А в чём именно затруднение? Создаёшь и добавляешь.


Пишем, для начала, что-нибудь такое, и смотрим,
что не так, чего не хватает, и в какие окна загружать.

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

Выделить код

Код:

(async sel => {
	var sep = document.querySelector(sel);
	if (!sep) return;

	var popup = sep.parentNode;
	var menuitem = document.createXULElement("menuitem");
	for(var args of Object.entries({
		"node-type": "link",
		"selection-type": "single",
		label: "Открыть в Sidebar Tabs",
		id: "placesContext_open:sidebartabs",
	}))
		menuitem.setAttribute(...args);

	menuitem.addEventListener("command", () => {
		var {uri} = popup.triggerNode._placesNode || popup._view.selectedNode;
		Services.wm.getMostRecentBrowserWindow()
			.ucf_custom_script_win.ucf_sidebar_tabs.setPanel(4, uri);
	});
	sep.before(menuitem);
})("menupopup#placesContext > #placesContext_openSeparator");

Отсутствует

 

№162216-06-2024 23:11:16

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

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

_zt пишет

URL-bar History Dropmarker отвалился. Поправите?

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

Выделить код

Код:

(async (
    id = Symbol("urlbarhistorydropmarker"),
    hidewhenusertyping = true, // скрывать dropmarker при вводе
    copyvalueistyped = true, // при вводе копировать содержимое адресной строки вместо URL
    currentURIlabel = "Адрес текущей страницы в буфере обмена!",
    valueIsTypedlabel = "Содержимое адресной строки в буфере обмена!",
    Ltooltiptext = "ЛКМ: Показать историю",
    Mtooltiptext = "СКМ: Обновить текущую страницу", // или false
    Rtooltiptext = "ПКМ: Копировать URL в буфер обмена", // или false
) => (this[id] = {
    dropmarker: null,
    pref: "browser.urlbar.suggest.history",
    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] > :is(#urlbar-input-container,.urlbar-input-container) > .urlbar-history-dropmarker {
                transition: none;
            }
            ${hidewhenusertyping ? `#urlbar[usertyping] > :is(#urlbar-input-container,.urlbar-input-container) > .urlbar-history-dropmarker {
                display: none;
            }` : ""}
            #nav-bar:not([customizing="true"]) > #nav-bar-customization-target > #urlbar-container:not(:hover) > #urlbar:not([focused]) > :is(#urlbar-input-container,.urlbar-input-container) > .urlbar-history-dropmarker {
                opacity: 0;
            }
        `)}`;
    },
    get helper() {
        delete this.helper;
        return this.helper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
    },
    init() {
        this.UrlbarProviderPlaces = ChromeUtils.importESModule("resource:///modules/UrlbarProviderPlaces.sys.mjs").UrlbarProviderPlaces;
        this.UrlbarProviderInputHistory = ChromeUtils.importESModule("resource:///modules/UrlbarProviderInputHistory.sys.mjs").UrlbarProviderInputHistory;
        Services.prefs.addObserver(this.pref, this);
        setUnloadMap(id, this.destructor, this);
        if (Services.prefs.getBoolPref(this.pref, false))
            this.createDropmarker();
    },
    get tooltipText() {
        delete this.tooltipText;
        return this.tooltipText = `${Ltooltiptext}${Mtooltiptext ? `\n${Mtooltiptext}` : ""}${Rtooltiptext ? `\n${Rtooltiptext}` : ""}`;
    },
    createDropmarker() {
        windowUtils.loadSheetUsingURIString(this.style, windowUtils.USER_SHEET);
        var dropmarker = this.dropmarker = document.createXULElement("image");
        dropmarker.className = "urlbar-page-action urlbar-history-dropmarker urlbar-icon";
        dropmarker.tooltipText = this.tooltipText;
        document.querySelector("#urlbar #page-action-buttons").before(dropmarker);
        dropmarker.addEventListener("mousedown", this);
        if (Rtooltiptext || Mtooltiptext)
            dropmarker.addEventListener("click", this);
    },
    removeDropmarker() {
        this.removeListeners();
        this.dropmarker.remove();
        this.dropmarker = null;
        windowUtils.removeSheetUsingURIString(this.style, windowUtils.USER_SHEET);
    },
    removeListeners() {
        this.dropmarker.removeEventListener("mousedown", this);
        if (Rtooltiptext || Mtooltiptext)
            this.dropmarker.removeEventListener("click", this);
    },
    observe() {
        if (!this.dropmarker) {
            if (Services.prefs.getBoolPref(this.pref, false))
                this.createDropmarker();
        } else
            this.removeDropmarker();
    },
    handleEvent(e) {
        this[e.type](e);
    },
    mousedown(e) {
        if (e.button) return;
        e.preventDefault();
        e.stopPropagation();
        if (gURLBar.view.isOpen)
            gURLBar.view.close();
        else {
            if (!gURLBar.valueIsTyped)
                this.UrlbarProviderPlaces.getPriority = this.UrlbarProviderInputHistory.getPriority = function() {
                    delete this.getPriority;
                    return 3;
                };
            gURLBar.focus();
            gURLBar.startQuery();
        }
    },
    click(e) {
        if (e.button === 0) return;
        e.preventDefault();
        e.stopPropagation();
        if (e.button === 1 && Mtooltiptext) {
            BrowserCommands.reload();
            return;
        }
        if (!Rtooltiptext) return;
        var url, val;
        if (!gURLBar.valueIsTyped || !copyvalueistyped) url = gURLBar.makeURIReadable(gBrowser.selectedBrowser.currentURI).displaySpec, val = currentURIlabel;
        else url = gURLBar.untrimmedValue, val = valueIsTypedlabel;
        this.helper.copyString(url);
        ConfirmationHint.show(this.dropmarker, "", { hideArrow: true });
        ConfirmationHint._message.removeAttribute("data-l10n-id");
        ConfirmationHint._message.textContent = val;
    },
    destructor() {
        if (this.dropmarker)
            this.removeListeners();
        Services.prefs.removeObserver(this.pref, this);
    },
}).init())();

Отсутствует

 

№162317-06-2024 07:26:16

Dobrov
Участник
 
Группа: Members
Зарегистрирован: 04-10-2011
Сообщений: 471
UA: Firefox 124.0

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

Dumby пишет

А в чём именно затруднение? Создаёшь и добавляешь.

С нуля делать не умею, изучал контекст-меню undoBookmarks, но это не совсем то…


Добавил в шапку версию Sidebar Tabs с поддержкой закладок (два скрипта в одном)

Отсутствует

 

№162417-06-2024 11:51:58

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

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

Vitaliy V.
Спасибо.
   
Тем кто будет использовать - ucfobj: true, старый с false работал.

Отсутствует

 

№162517-06-2024 14:09:33

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

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

Dobrov пишет

(два скрипта в одном)

Напрасно, тебе же Dumby сделал чтобы не только в основном окне работало но также в библиотеке или в самом сайдбаре
подключить в scriptsallchrome.load
{ path: "places_context_open.js", urlregxp: /chrome:\/\/browser\/content\/(?:browser|places\/(?:bookmarksSidebar|historySidebar|places))\.xhtml/, },



Небольшое обновление Sidebar Tabs, устранил проблему в режиме автоскрытия, когда при открытии из меню не всегда срабатывало авто открытие

Отсутствует

 

Board footer

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