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

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

№5120-09-2021 15:45:29

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

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

Vitaliy V. пишет

Для окна браузера - Включить скрипты: чекбокс "Для докум. окна браузера [ChromeOnly]"
и в CustomStylesScripts.jsm добавить в массив load: [ // По событию load    или domload: [ // По событию DOMContentLoaded
нужные вам скрипты, как видите здесь уже добавленны в закомментированном виде Special Widgets и Auto Hide Sidebar
скрытый текст

Да и параметр ucfobj должен быть true для моих скриптов (если не указано), и false или отсутствовать для других (если автором скрипта не указано обратное)

PS: custom_script_win.js и custom_script_all_win.js не нужно подключать в CustomStylesScripts.jsm
только в интерфейсе настроек включить "Для докум. окна браузера [ChromeOnly]" или "Для докум. всех окон [ChromeOnly]" соответственно
эти файлы не переименовывать и не удалять.
А custom_script.js можно раскомментировать в CustomStylesScripts.jsm ну или удалить или добавить с другим именем

Пока не ясно как это работает, но надеюсь разберусь :)


Vitaliy V. пишет

И кстати коды загрузчиков скриптов для custom_script_win.js custom_script_all_win.js также будут работать можете использовать их если нравится

Спасибо!


Win7

Отсутствует

 

№5220-09-2021 16:39:59

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

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

kokoss пишет

Пока не ясно как это работает

А что не ясно, как работает (алгоритм, непонятно объяснил) или это не работает для вас?

Отсутствует

 

№5320-09-2021 17:01:25

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

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

Vitaliy V. пишет

или это не работает для вас?

Я же не сказал что не работает, просто многовато изменений.

непонятно объяснил)

да вроде понятно, если что спрошу


Win7

Отсутствует

 

№5420-09-2021 18:45:18

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

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

kokoss пишет

просто многовато изменений

Возможностей тоже прибавилось и потому что для более новых версий [firefox], 78+ теперь
было для 52+

Отредактировано Vitaliy V. (20-09-2021 18:51:06)

Отсутствует

 

№5520-09-2021 21:00:57

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

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

Vitaliy V.
Спасибо за обновлённый комплект. Почти всё сразу заработало на подопытной 92.
Возникли только проблемы со скриптами для всех окон. ucf_wheretoopenlink.js и скрипты окна загрузок у меня не получилось запустить. В настройках включены все стили и скрипты. startupCache чистил постоянно.
Прописывал в CustomStylesScripts.jsm, поочерёдно в секции: domload: [ // По событию DOMContentLoaded, в load: [ // По событию load, по аналогии { path: "example_places.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, }, с другими именами. Запустить удалось только по-старинке с добавлением загрузчика в custom_script_all_win.js
Не знаю может чего недопонял, неправильно сделал, да вроде и вариантов не много. Хорошо бы без загрузчиков запустить, как я понял из вашего поста, это возможно. Полный код CustomStylesScripts.jsm, как изначально, ну примерно так, прописывал незапустившиеся скрипты. ucjsDownloadsManager.uc.js прописывал тоже выше ucjsDownloadsManager2.uc.js

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

Выделить код

Код:

var EXPORTED_SYMBOLS = ["UcfStylesScripts"];
var UcfStylesScripts = {
    /* ************************▼ Настройки ▼************************ */
    /**
    * Настройки стилей:
    *   path: путь к файлу от папки custom_styles
    *   type: права стиля AGENT_SHEET,  AUTHOR_SHEET или USER_SHEET
    */
    styleschrome: [ // Для докум. всех окон [ChromeOnly]
        // { path: "custom_styles_chrome_author.css", type: "AUTHOR_SHEET", sheet(f) { preloadSheet(this, f); }, },
        { path: "custom_styles_chrome_user.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, },
        { path: "special_widget.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, }, // <-- Special Widgets
        { path: "auto_hide_sidebar.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, }, // <-- Auto Hide Sidebar
    ],
    stylesall: [ // Для всех документов
        // { path: "custom_styles_all_agent.css", type: "AGENT_SHEET", sheet() { registerSheet(this); }, },
        // { path: "custom_styles_all_user.css", type: "USER_SHEET", sheet() { registerSheet(this); }, },
    ],
    /**
    * Настройки скриптов:
    *   path: путь к скрипту от папки custom_scripts
    *   urlregxp: Адрес где работает скрипт в регулярном выражении, только Для докум. всех окон [ChromeOnly]
    *   ucfobj: true - загружать скрипт в специально созданный объект либо в window, для скриптов В фоне [System Principal] не используется
    */
    scriptschrome: { // Для докум. окна браузера [ChromeOnly]
        domload: [ // По событию DOMContentLoaded

        ],
        load: [ // По событию load
            // { path: "special_widgets.js", ucfobj: true, }, // <-- Special Widgets
            // { path: "auto_hide_sidebar.js", ucfobj: true, }, // <-- Auto Hide Sidebar
            { path: "scripts3/favicon_in_urlbar.js", ucfobj: true, },
            { path: "scripts3/restart_item_in_menu.js", ucfobj: true, },
            { path: "scripts3/urlbarhistorydropmarker.js", ucfobj: true, },
            { path: "scripts3/contextmenuopenwith.js", ucfobj: true, }, 
            { path: "scripts3/add_bookmark_to_bookmarks_menu.js", ucfobj: false, },
            { path: "scripts3/pageInfo.js", ucfobj: false, },
            { path: "scripts3/places_addBookmarks.js", ucfobj: false, },
            { path: "scripts3/search_engine_icon.js", ucfobj: false, },
            { path: "scripts3/tabs_focus.js", ucfobj: false, },
            { path: "scripts3/tabstoolbar_doubleclick_opennewtab.js", ucfobj: false, },
            { path: "scripts2/ucjsDownloadsManager.uc.js", ucfobj: false, },
        ],
    },
    scriptsallchrome: { // Для докум. всех окон [ChromeOnly]
        domload: [ // По событию DOMContentLoaded
            // { path: "example_places.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
            { path: "scripts2/ucjsDownloadsManager2.uc.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
        ],
        load: [ // По событию load
            // { path: "example_places.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
        ],
    },
    scriptsbackground: [ // В фоне [System Principal]
        { path: "custom_script.js", },
    ],
};
    /* ************************▲ Настройки ▲************************ */

var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
var UcfSSS = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
var preloadSheet = (obj, func) => {
    try {
        let uri = Services.io.newURI(`chrome://user_chrome_files/content/custom_styles/${obj.path}`);
        let type = UcfSSS[obj.type];
        let preload = UcfSSS.preloadSheet(uri, type);
        (obj.sheet = f => {
            try {
                f(preload, type);
            } catch (e) {}
        })(func);
    } catch (e) {
        obj.sheet = () => {};
    }
};
var registerSheet = async obj => {
    try {
        let uri = Services.io.newURI(`chrome://user_chrome_files/content/custom_styles/${obj.path}`);
        let type = UcfSSS[obj.type];
        if (!UcfSSS.sheetRegistered(uri, type))
            UcfSSS.loadAndRegisterSheet(uri, type);
    } catch (e) {}
};

Окно загрузок работает частично при добавлении ucjsDownloadsManager.uc.js в секцию scriptschrome: { // Для докум. окна браузера [ChromeOnly], ну это и понятно.
Добавление второй части скрипта в эту же секцию результата не дало, ну это и было ожидаемо.

Отредактировано sandro79 (20-09-2021 21:14:28)

Отсутствует

 

№5621-09-2021 01:06:26

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

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

sandro79 пишет

ucf_wheretoopenlink.js

Ок добавил ещё параметр где можно указать функцию которая выполнится при загрузке скрипта
func: Функция в виде строки которая выполнится при загрузке скрипта ...


вот так это должно выглядеть для окна библиотеки

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

Выделить код

Код:

load: [ // По событию load
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.places();" },
        ],


и для CustomStylesScriptsChild.jsm если нужно в контенте
скрытый текст

Выделить код

Код:

pageshow: [ // По событию pageshow
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, func: "ucf_where_to_open_link.places();" },
        ],

sandro79 пишет

может чего недопонял, неправильно сделал

Да с чего вы взяли что ваш ucjsDownloadsManager это окно библиотеки? Там все вместе и заклади и загрузки...
Но и я накосячил с для события load, забыл передать url документа в фукцию
Однако по событию DOMContentLoaded у вас бы сработало с этим адресом

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

Выделить код

Код:

/chrome:\/\/browser\/content\/downloads\/contentAreaDownloadsView\.xhtml/

Отредактировано Vitaliy V. (21-09-2021 01:24:15)

Отсутствует

 

№5721-09-2021 02:28:22

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

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

Vitaliy V. пишет

Ок добавил ещё параметр где можно указать функцию которая выполнится при загрузке скрипта

Я так понял, что это было добавлено в нижнюю секцию "Настройки", обновил в обоих файлах и обновил user_chrome.js. В окне библиотеке сработало, для CustomStylesScriptsChild.jsm не добавлял, в контенте не нужно. Но вот почему не работает из боковой панели, значка журнала на панели, журнала из панели меню, ну то есть, как я понимаю в окне браузера "Для докум. окна браузера"? Вот это самое главное, о чём я забыл упомянуть выше, что вообще нигде не работает, кроме как если добавить загрузчик в custom_script_all_win.js, хотя можно и в custom_script_win.js.

Да с чего вы взяли что ваш ucjsDownloadsManager это окно библиотеки?

Да, в ходе экспериментов я это понял, когда оставил в адресе в регулярном выражении только chrome:/ - так кажется и серипт заработал. Сейчас с вашим адресом тоже работает. Только вот с ucf_wheretoopenlink.js не могу до конца разобраться.
Код CustomStylesScripts.jsm на данный момент ниже. Добавил  { path: "scripts2/ucf_wheretoopenlink.js", ucfobj: false,  }, в секцию Для докум. окна браузера [ChromeOnly], не работает, это добавлял func: "ucf_where_to_open_link.places();", ни так ни так не идёт

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

Выделить код

Код:

var EXPORTED_SYMBOLS = ["UcfStylesScripts"];
var UcfStylesScripts = {
    /* ************************▼ Настройки ▼************************ */
    /**
    * Настройки стилей:
    *   path: путь к файлу от папки custom_styles
    *   type: права стиля AGENT_SHEET,  AUTHOR_SHEET или USER_SHEET
    */
    styleschrome: [ // Для докум. всех окон [ChromeOnly]
        // { path: "custom_styles_chrome_author.css", type: "AUTHOR_SHEET", sheet(f) { preloadSheet(this, f); }, },
        { path: "custom_styles_chrome_user.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, },
        { path: "special_widget.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, }, // <-- Special Widgets
        { path: "auto_hide_sidebar.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, }, // <-- Auto Hide Sidebar
    ],
    stylesall: [ // Для всех документов
        { path: "custom_styles_all_agent.css", type: "AGENT_SHEET", sheet() { registerSheet(this); }, },
        // { path: "custom_styles_all_user.css", type: "USER_SHEET", sheet() { registerSheet(this); }, },
    ],
    /**
    * Настройки скриптов:
    *   path: путь к скрипту от папки custom_scripts
    *   urlregxp: Адрес где работает скрипт в регулярном выражении, только Для докум. всех окон [ChromeOnly]
    *   ucfobj: true - загружать скрипт в специально созданный объект либо в window, для скриптов В фоне [System Principal] не используется
    *   func: Функция в виде строки которая выполнится при загрузке скрипта, только Для докум. всех окон [ChromeOnly]
    */
    scriptschrome: { // Для докум. окна браузера [ChromeOnly]
        domload: [ // По событию DOMContentLoaded

        ],
        load: [ // По событию load
            // { path: "special_widgets.js", ucfobj: true, }, // <-- Special Widgets
            // { path: "auto_hide_sidebar.js", ucfobj: true, }, // <-- Auto Hide Sidebar
            { path: "scripts3/favicon_in_urlbar.js", ucfobj: true, },
            { path: "scripts3/restart_item_in_menu.js", ucfobj: true, },
            { path: "scripts3/urlbarhistorydropmarker.js", ucfobj: true, },
            { path: "scripts3/contextmenuopenwith.js", ucfobj: true, }, 
            { path: "scripts3/add_bookmark_to_bookmarks_menu.js", ucfobj: false, },
            { path: "scripts3/pageInfo.js", ucfobj: false, },
            { path: "scripts3/places_addBookmarks.js", ucfobj: false, },
            { path: "scripts3/search_engine_icon.js", ucfobj: false, },
            { path: "scripts3/tabs_focus.js", ucfobj: false, },
            { path: "scripts3/tabstoolbar_doubleclick_opennewtab.js", ucfobj: false, },
            { path: "scripts2/ucjsDownloadsManager.uc.js", ucfobj: false, },
            { path: "scripts2/ucf_wheretoopenlink.js", ucfobj: false,  },
        ],
    },
    scriptsallchrome: { // Для докум. всех окон [ChromeOnly]
        domload: [ // По событию DOMContentLoaded
            // { path: "example_places.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
            { path: "scripts2/ucjsDownloadsManager2.uc.js", urlregxp: /chrome:\/\/browser\/content\/downloads\/contentAreaDownloadsView\.xhtml/, ucfobj: false, },
        ],
        load: [ // По событию load
            // { path: "example_places.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.places();" },
        ],
    },
    scriptsbackground: [ // В фоне [System Principal]
        { path: "custom_script.js", },
    ],
};
    /* ************************▲ Настройки ▲************************ */

var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
var UcfSSS = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
var preloadSheet = (obj, func) => {
    try {
        let uri = Services.io.newURI(`chrome://user_chrome_files/content/custom_styles/${obj.path}`);
        let type = UcfSSS[obj.type];
        let preload = UcfSSS.preloadSheet(uri, type);
        (obj.sheet = f => {
            try {
                f(preload, type);
            } catch (e) {}
        })(func);
    } catch (e) {
        obj.sheet = () => {};
    }
};
var registerSheet = async obj => {
    try {
        let uri = Services.io.newURI(`chrome://user_chrome_files/content/custom_styles/${obj.path}`);
        let type = UcfSSS[obj.type];
        if (!UcfSSS.sheetRegistered(uri, type))
            UcfSSS.loadAndRegisterSheet(uri, type);
    } catch (e) {}
};

Отсутствует

 

№5821-09-2021 02:57:54

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

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

sandro79
Вот так для браузера, но прежде обновите user_chrome.js я там поправил ещё

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

Выделить код

Код:

{ path: "scripts2/ucf_wheretoopenlink.js", ucfobj: false, func: "ucf_where_to_open_link.browser();" },


А это для других докум.
скрытый текст

Выделить код

Код:

{ path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/bookmarksSidebar\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.bookmarksSidebar();" },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/historySidebar\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.historySidebar();" },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.places();" },

Дело в том что нужно разные функции добавлять, а это "ucf_where_to_open_link.places();" только для библиотеки
Иначе этот скрипт пришлось бы делить на 4 части, или в скрипте снова проверять url, а так в каждом документе выполняется разный код при вызове этих функций

Отредактировано Vitaliy V. (21-09-2021 03:05:22)

Отсутствует

 

№5921-09-2021 08:38:38

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

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

Vitaliy V.
Обновил user_chrome.js, пути с функциями прописал, заработало везде. Ну теперь всё в принципе настроено. Для контента тоже добавил, раз есть возможность лишним не будет.
custom_script.js с кнопками и скриптами LinkWinActor и UCFNewTabPage, сменой иконки поиковика, пока по-старинке с загрузчиком оставил. Вечером наверно тоже переподключу по-новому. Огромное Спасибо, буду тестировать.

CustomStylesScripts.jsm

Выделить код

Код:

var EXPORTED_SYMBOLS = ["UcfStylesScripts"];
var UcfStylesScripts = {
    /* ************************▼ Настройки ▼************************ */
    /**
    * Настройки стилей:
    *   path: путь к файлу от папки custom_styles
    *   type: права стиля AGENT_SHEET,  AUTHOR_SHEET или USER_SHEET
    */
    styleschrome: [ // Для докум. всех окон [ChromeOnly]
        // { path: "custom_styles_chrome_author.css", type: "AUTHOR_SHEET", sheet(f) { preloadSheet(this, f); }, },
        { path: "custom_styles_chrome_user.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, },
        { path: "special_widget.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, }, // <-- Special Widgets
        { path: "auto_hide_sidebar.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, }, // <-- Auto Hide Sidebar
    ],
    stylesall: [ // Для всех документов
        { path: "custom_styles_all_agent.css", type: "AGENT_SHEET", sheet() { registerSheet(this); }, },
        // { path: "custom_styles_all_user.css", type: "USER_SHEET", sheet() { registerSheet(this); }, },
    ],
    /**
    * Настройки скриптов:
    *   path: путь к скрипту от папки custom_scripts
    *   urlregxp: Адрес где работает скрипт в регулярном выражении, только Для докум. всех окон [ChromeOnly]
    *   ucfobj: true - загружать скрипт в специально созданный объект либо в window, для скриптов В фоне [System Principal] не используется
    *   func: Функция в виде строки которая выполнится при загрузке скрипта, только Для докум. всех окон [ChromeOnly]
    */
    scriptschrome: { // Для докум. окна браузера [ChromeOnly]
        domload: [ // По событию DOMContentLoaded

        ],
        load: [ // По событию load
            // { path: "special_widgets.js", ucfobj: true, }, // <-- Special Widgets
            // { path: "auto_hide_sidebar.js", ucfobj: true, }, // <-- Auto Hide Sidebar
            { path: "scripts3/favicon_in_urlbar.js", ucfobj: true, },
            { path: "scripts3/restart_item_in_menu.js", ucfobj: true, },
            { path: "scripts3/urlbarhistorydropmarker.js", ucfobj: true, },
            { path: "scripts3/contextmenuopenwith.js", ucfobj: true, }, 
            { path: "scripts3/add_bookmark_to_bookmarks_menu.js", ucfobj: false, },
            { path: "scripts3/pageInfo.js", ucfobj: false, },
            { path: "scripts3/places_addBookmarks.js", ucfobj: false, },
            { path: "scripts3/search_engine_icon.js", ucfobj: false, },
            { path: "scripts3/tabs_focus.js", ucfobj: false, },
            { path: "scripts3/tabstoolbar_doubleclick_opennewtab.js", ucfobj: false, },
            { path: "scripts2/ucjsDownloadsManager.uc.js", ucfobj: false, },
            { path: "scripts2/ucf_wheretoopenlink.js", ucfobj: false, func: "ucf_where_to_open_link.browser();" },
        ],
    },
    scriptsallchrome: { // Для докум. всех окон [ChromeOnly]
        domload: [ // По событию DOMContentLoaded
            // { path: "example_places.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
            { path: "scripts2/ucjsDownloadsManager2.uc.js", urlregxp: /chrome:\/\/browser\/content\/downloads\/contentAreaDownloadsView\.xhtml/, ucfobj: false, },
        ],
        load: [ // По событию load
            // { path: "example_places.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.places();" },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/bookmarksSidebar\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.bookmarksSidebar();" },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/historySidebar\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.historySidebar();" },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, ucfobj: false, func: "ucf_where_to_open_link.places();" },
        ],
    },
    scriptsbackground: [ // В фоне [System Principal]
        { path: "scripts/add-sound-realtek-app.js", },
        { path: "scripts/Close-Tabs-button.js", },
        { path: "scripts/downloadPauseResumeButton.js", },
        { path: "scripts/ExtensionOptionsMenu.js", },
        { path: "scripts/LinkWinActor.js", },
        { path: "scripts/PotPlayer.js", },
        { path: "scripts/To_switch_proxy.js", },
        { path: "scripts/ucf-copyURL.js", },
        { path: "scripts/UCFNewTabPage.js", },
        { path: "scripts/undo_closetab_button.js", },
        { path: "scripts/yandex@search.js", },
    ],
};
    /* ************************▲ Настройки ▲************************ */

var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
var UcfSSS = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
var preloadSheet = (obj, func) => {
    try {
        let uri = Services.io.newURI(`chrome://user_chrome_files/content/custom_styles/${obj.path}`);
        let type = UcfSSS[obj.type];
        let preload = UcfSSS.preloadSheet(uri, type);
        (obj.sheet = f => {
            try {
                f(preload, type);
            } catch (e) {}
        })(func);
    } catch (e) {
        obj.sheet = () => {};
    }
};
var registerSheet = async obj => {
    try {
        let uri = Services.io.newURI(`chrome://user_chrome_files/content/custom_styles/${obj.path}`);
        let type = UcfSSS[obj.type];
        if (!UcfSSS.sheetRegistered(uri, type))
            UcfSSS.loadAndRegisterSheet(uri, type);
    } catch (e) {}
};

Переподключил скрипты scriptsbackground: [ // В фоне [System Principal] Всё подхватилось и работает. Код под спойлером обновил.


CustomStylesScriptsChild.jsm

Выделить код

Код:

var EXPORTED_SYMBOLS = ["UcfCustomStylesScriptsChild"];
var UcfStylesScripts = {
    /* ************************▼ Настройки ▼************************ */
    /**
    * Настройки стилей:
    *   path: путь к файлу от папки custom_styles
    *   type: права стиля AGENT_SHEET,  AUTHOR_SHEET или USER_SHEET
    */
    stylescontent: [
        // { path: "custom_styles_content_author.css", type: "AUTHOR_SHEET", sheet(f) { preloadSheet(this, f); }, },
        { path: "custom_styles_content_user.css", type: "USER_SHEET", sheet(f) { preloadSheet(this, f); }, },
    ],
    /**
    * Настройки скриптов:
    *   path: путь к скрипту от папки custom_scripts
    *   urlregxp: Адрес где работает скрипт, в регулярном выражении
    *   func: Функция в виде строки которая выполнится при загрузке скрипта
    */
    scriptscontent: {
        DOMWindowCreated: [ // По событию DOMWindowCreated
            // { path: "example_all_about.js", urlregxp: /about:.*/, },
        ],
        pageshow: [ // По событию pageshow
            // { path: "example_downloads.js", urlregxp: /about:downloads/, },
            { path: "scripts2/ucf_wheretoopenlink.js", urlregxp: /chrome:\/\/browser\/content\/places\/places\.xhtml/, func: "ucf_where_to_open_link.places();" },
            { path: "scripts2/ucjsDownloadsManager2.uc.js",  urlregxp: /about:downloads/, },
        ],
    },
};
    /* ************************▲ Настройки ▲************************ */
var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
var UcfSSS = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
var preloadSheet = async (obj, func) => {
    try {
        let uri = Services.io.newURI(`chrome://user_chrome_files/content/custom_styles/${obj.path}`);
        let type = UcfSSS[obj.type];
        let preload = await UcfSSS.preloadSheetAsync(uri, type);
        (obj.sheet = f => {
            try {
                f(preload, type);
            } catch (e) {}
        })(func);
    } catch (e) {
        obj.sheet = () => {};
    }
};
class UcfCustomStylesScriptsChild extends JSWindowActorChild {
    actorCreated() {
        var win = this.contentWindow;
        var href = this.href = win?.location.href;
        if (!href) return;
        var { addSheet } = win.windowUtils;
        for (let s of UcfStylesScripts.stylescontent)
            s.sheet(addSheet);
    }
    handleEvent(e) {
        var href = this.href;
        if (!href || href === "about:blank") return;
        for (let s of UcfStylesScripts.scriptscontent[e.type]) {
            try {
                if (s.urlregxp.test(href)) {
                    let win = this.contentWindow;
                    Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${s.path}`, win, "UTF-8");
                    if (s.func)
                        new win.Function(s.func).apply(win, null);
                }
            } catch (e) {}
        }
    }
}

Отредактировано sandro79 (21-09-2021 11:35:29)

Отсутствует

 

№6021-09-2021 13:32:26

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

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

Vitaliy V.
Спасибо за обновление. Уведомления пропали у этого скрипта, как их вернуть? Сейчас подключен в CustomStylesScripts.jsm, в scriptsbackground.

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

Выделить код

Код:

try {
    ((img, preventClearThumbs) => {
        CustomizableUI.createWidget({
            id: "bt-clear-part-history",
            label: "Очистить историю",
            tooltiptext: "Очистить историю",
            defaultArea: CustomizableUI.AREA_NAVBAR,
            onCreated: function(bt) {
                bt.image = img;
            },
            onCommand: function(event) {
                var win = event.target.ownerDocument.defaultView;
                var itemsToClear = [
                    "cookies",
                    "history",
                    "formdata",
                    "sessions",
                    "cache",
                 // "downloads",
                 // "offlineApps",
                 // "openWindows",
                    "pluginData",
                 // "siteSettings",
                ];
                var range = win.Sanitizer.getClearRange(0); // Диапазон очистки, 0 = все, 1,2,3 = часы, 4 = сегодня
                win.Sanitizer.sanitize(itemsToClear, {
                    ignoreTimespan: !range,
                    range,
                }).then(() => {
                    var alertsService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
                    alertsService.showAlertNotification(img, "Данные очищены!", "", false);
                    win.setTimeout(()=> alertsService.closeAlert(), 2000);
                });
            }
        });
    })("data:image/png;base64,i...", null);
} catch(e) {}


В CustomStylesScripts.jsm присутстуют раскомментированные строки:
            { path: "translatetextorpage.js", ucfobj: true, },
            { path: "contextproxy.js", ucfobj: true, },
но таких скриптов в комплекте нет.

Отредактировано _zt (21-09-2021 14:56:50)

Отсутствует

 

№6121-09-2021 18:05:46

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

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

_zt пишет

Уведомления пропали у этого скрипта, как их вернуть? ... "data:image/png;base64,i..."

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

_zt пишет

В CustomStylesScripts.jsm присутстуют раскомментированные строки:

Это я из FullTheme забыл убрать прежде чем отправить


Обновил в FullTheme файлы: common.css, CustomStylesScripts.jsm, CustomStylesScriptsChild.jsm
и в UserChromeFiles файлы: user_chrome.js, CustomStylesScripts.jsm, CustomStylesScriptsChild.jsm

Отредактировано Vitaliy V. (21-09-2021 21:11:52)

Отсутствует

 

№6221-09-2021 21:21:10

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

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

Vitaliy V.

Error: Could not get children of file(...\LocalAppData\Temp\thumbnails) because it does not exist PromiseWorker.jsm:106

На старом то ucf этот скрипт уведомление выводит. Иконку я здесь из кода удалил так как много места занимает.
   
Проверил на старом ucf, уведомление есть. thumbnails отключаю уже много лет и уведомлениям это никогда не мешало, да и с удаленным browser.pagethumbnails.capturing_disabled, в этой версии ucf, уведомлений нет, а папка все равно по тому пути не создается.

Отредактировано _zt (21-09-2021 21:34:55)

Отсутствует

 

№6321-09-2021 22:24:16

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

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

_zt пишет

Error: Could not get children of file(...\LocalAppData\Temp\thumbnails) because it does not exist PromiseWorker.jsm:106

На старом то ucf этот скрипт уведомление выводит.

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

Отсутствует

 

№6422-09-2021 02:47:05

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

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

Vitaliy V.
Профиль один и тот же, я только его собрал и тут вы со своим обновлением. :) (шутка) Я его пересобрал, на тех же скриптах, стилях, расширениях и с теми же конфигами, за исключением вашего config.js. Отвалился стиль для адресной строки из userChrome.css, пришлось его перенести в CustomStylesScripts.jsm в секцию styleschrome с правами USER_SHEET, никак по другому он не заработал. Скрипты из custom_script.js я все переподключил в CustomStylesScripts.jsm в секцию scriptsbackground, в том числе и обсуждаемый. Скрипты custom_script_win.js оставил на месте, так как решил не заморачиваться. Скриптов custom_script_all_win.js у меня не оказалось. Т.е. две проблемы стиль и этот скрипт. Ясен пень, что ucf виноват.
   
Но оказалось все проще, смотрите мультики:

Находим виновника

01.1632267720.gif

И отправляем его в ссылку

02.1632267763.gif
А вообще вы молодец, а виноват во всем я. Я же его выпросил. :)

Отсутствует

 

№6522-09-2021 10:27:06

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

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

Vitaliy V.
А можно как-то вернуть в новый UCF возможность использования стилей для веб-страниц через файл custom_styles_content_user.css?
Может опцией, если надо может, чтоб включить можно было в CustomStylesScriptsChild.jsm. У меня в старом комплекте в custom_style_user.css добавлено несколько кодов для страниц, в частности, очень нужный для меня :root { text-decoration-skip-ink: none;}, для этого форума стиль.
Можно конечно включить toolkit.legacyUserProfileCustomizations.stylesheets, добавить в папку chrome файл userContent.css и по-старинке использовать, но это не работает в безопасном режиме, да и вообще... Вообще удобно в старом UCF то, что стили и для интерфейса и для страниц можно использовать/подгонять в одном файле css.
Этот код, только с regexp, тоже использую для веб-страниц

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

Выделить код

Код:

@-moz-document regexp("(?:https?|ftp|file):\/\/.*") {
input, textarea {
    /* border: 1px solid rgba(131,137,150,.5); */
    outline: 1px solid transparent;
}
}

В новом комплекте непонятно как всё вышеперечисленное запустить...

Отсутствует

 

№6622-09-2021 11:07:04

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

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

sandro79 пишет

в старом комплекте в custom_style_user.css

А в новом в custom_styles_all_user.css

Отсутствует

 

№6722-09-2021 11:19:06

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

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

Dumby пишет

А в новом в custom_styles_all_user.css

Да, работает там, в трёх соснах заблудился. Спасибо за подсказку :beer: Вот надо же, так облажаться :dumb:


И chrome и content работает, как и в старом. Всё отлично.

Отредактировано sandro79 (22-09-2021 11:28:01)

Отсутствует

 

№6822-09-2021 19:57:20

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

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

del

Отредактировано Vitaliy V. (22-04-2024 15:33:41)

Отсутствует

 

№6923-09-2021 03:38:51

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

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

Vitaliy V.
Починилось.
   
Нашел еще несколько проблем, давайте по порядку, так как возможно они взаимосвязаны:
2021.1632357561.png
Вот я просто слов без мата не нахожу, что бы описать этот цвет, именно в этом диалоге оно где, в common.css ?

@media (-moz-toolbar-prefers-color-scheme: dark) {
:root, dialog, menu-button, login-filter, login-item, login-intro, login-list, fxaccounts-button, remove-logins-dialog,
    import-error-dialog, import-summary-dialog, confirmation-dialog, info-item, message-bar, addon-updates-message {
>>
    --in-content-primary-button-background: var(--blue-50) !important;

   
Если да, то тогда оно не работает, цвет не меняется. В --blue-50 тоже.
   
После переноса в userChrome.css правило работает.

Отредактировано _zt (23-09-2021 15:28:55)

Отсутствует

 

№7023-09-2021 11:12:27

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 559
UA: Firefox 91.0

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

_zt
Поделись, пожалуйста этой закладкой Старый about:config
У меня даже нет такой папки chrome://user_chrome_files/content/aboutconfig/

Отсутствует

 

№7123-09-2021 11:22:10

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

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

rubel
https://forum.mozilla-russia.org/viewto … 75#p789675


Add,

скрин
e0101f473944.png

Отредактировано kokoss (23-09-2021 12:24:41)


Win7

Отсутствует

 

№7223-09-2021 14:21:42

rubel
Участник
 
Группа: Members
Откуда: г.Самара
Зарегистрирован: 10-05-2005
Сообщений: 559
UA: Firefox 91.0

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

kokoss
OK, спасибо. все получилось.

Отсутствует

 

№7323-09-2021 18:32:00

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

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

_zt пишет

оно где, в common.css ?

Нет в common.css только контент.
В common_win.css я некоторые окна добавил, это туда же url("chrome://browser/content/places/bookmarkProperties.xhtml")
Ну я потом добавлю другие окна где есть <dialog>


Вроде готово, обновил FullTheme
и UserChromeFiles ещё раз обновил надеюсь пока больше не буду трогать если только баг всплывет.


upd: обновил Sidebar Tabs и Тултипы с URL https://forum.mozilla-russia.org/viewto … 02#p792702

Отредактировано Vitaliy V. (24-09-2021 13:41:21)

Отсутствует

 

№7424-09-2021 17:07:29

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

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

Vitaliy V.
Починилось.Спасибо.
   
Можете объяснить?

Прошлая версия
02.1632481807.gif

Отсутствует

 

№7524-09-2021 18:03:30

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

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

_zt пишет

Можете объяснить?

А что тут объяснять
Отключили переменную в chrome://global/skin/in-content/common.css
для темной темы
@media (-moz-toolbar-prefers-color-scheme: dark)
Но переменная для светлой темы осталась именно она и дает этот синий цвет
а не от FullTheme. Ну или это вы там что-то наподключали, но такого цвета #2b71e4 в моей теме нет.
Впрочем gif же у вас цвет искажен скорее всего

Отредактировано Vitaliy V. (24-09-2021 18:41:42)

Отсутствует

 

Board footer

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