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

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№1575109-07-2021 02:05:54

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 661
UA: Firefox 54.0

Re: Custom Buttons

То есть предварительно, надо создать этот файл alternative_searchbar.uc.js ?
Вы уж простите старика. Ну тупой я для такого. Общение с программером, для меня все равно что с китайцем.
Не понимаю я всего этого "//>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>>
loadscript("alternative_searchbar.uc.js", win);"

PS Создал alternative_searchbar.uc.js
Вписал по инструкции код загрузчика
Даже вручную добавил код сперва с одной ссылки, а потом попробовал с другой

сделать можно если этот не устроит [firefox] 85+ https://github.com/Aris-t2/CustomJSforF … hbar.uc.js
или [firefox] 78-84 https://github.com/Aris-t2/CustomJSforF … _old.uc.js
Поиск не изменился. Понятно что туплю. Вопрос где?

Отредактировано vv07 (09-07-2021 02:34:01)

Отсутствует

 

№1575209-07-2021 13:03:32

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

Re: Custom Buttons

vv07 пишет

Понятно что туплю. Вопрос где?

Мне это не ведомо, всё разжёвано не знаю что и добавить,
разве что очевидное включить в настройках custom_script_win.js забыл написать.
Но если человек который пользуется блокнотом вместо нормального редактора то может быть всё что угодно

Я сразу не заметил этого, но часть кода кириллицей,
почему то сохранилась кракозябрами.

vv07 пишет

PS Создал alternative_searchbar.uc.js

вам лучше скачать, на github есть кнопка Raw потом в меню сохранить как...

vv07 пишет

Вписал по инструкции код загрузчика

короче выложите архив папки user_chrome_files куда-нибудь тогда будет видно что вы там наделали

Отредактировано Vitaliy V. (09-07-2021 13:10:34)

Отсутствует

 

№1575309-07-2021 17:40:18

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 661
UA: Firefox 54.0

Re: Custom Buttons

разве что очевидное включить в настройках custom_script_win.js забыл написать.

Ну не настолько уж туп  :blush:
Вы лучше скажите, как сие должно работать.
Зашел я по ссылке и что? Скрипт сам должен загрузиться?
Или я что то должен еще проделать?
Ваши инструкции выполнил качественно.

вам лучше скачать, на github есть кнопка Raw потом в меню сохранить как...

Положил по очереди оба файла в папку custom_scripts. Реакции ноль
8d553e692e9e.jpg

Отсутствует

 

№1575409-07-2021 20:03:08

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

Re: Custom Buttons

vv07 пишет

Ваши инструкции выполнил качественно.

Если бы это было так, тогда бы всё получилось как на скриншоте

скрытый текст
hdfhsaytsxjnc.png

vv07 пишет

Зашел я по ссылке и что? Скрипт сам должен загрузиться?

Вот этот вопрос просто ставит в тупик, китайца проще понять...

vv07 пишет

Положил по очереди оба файла в папку custom_scripts. Реакции ноль

Какие ещё два файла я дал ссылки для разных версий [firefox] вы что не в курсе какая у вас версия?!


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

Отсутствует

 

№1575510-07-2021 00:11:47

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 661
UA: Firefox 54.0

Re: Custom Buttons

Vitaliy V.
Я же сказал, что по очереди, а не оба сразу. Как вы посоветовали сделать

вам лучше скачать, на github есть кнопка Raw потом в меню сохранить как...

У меня там нет ничего секретного. Сейчас закину на облако

Отсутствует

 

№1575610-07-2021 00:49:07

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

Re: Custom Buttons

vv07 пишет

Сейчас закину на облако

Итак вот его содержимое

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

Выделить код

Код:

// Этот скрипт работает в главном окне браузера если включено в настройках

var ucf_custom_script_win = {
    initialized: false,
    get unloadlisteners() {
        delete this.unloadlisteners;
        window.addEventListener("unload", this, { once: true });
        return this.unloadlisteners = [];
    },
    load() {
        if (this.initialized)
            return;
        this.initialized = true;
        // this.specialwidgets.init(); // <-- Special Widgets
        // this.autohidesidebar.init(); // <-- Auto Hide Sidebar
        /* ************************************************ */

        // Здесь может быть ваш код который сработает по событию "load" не раньше

        /* ************************************************ */
    },
    handleEvent(e) {
        this[e.type](e);
    },
    unload() {
        this.unloadlisteners.forEach(str => {
            try {
                this[str].destructor();
            } catch (e) {}
        });
    },
    specialwidgets: {
        _timer: null,
        get Customizable() {
            delete this.Customizable;
            if ("createSpecialWidget" in CustomizableUI)
                return this.Customizable = CustomizableUI;
            var scope = null;
            try {
                scope = Cu.import("resource:///modules/CustomizableUI.jsm", {}).CustomizableUIInternal;
            } catch (e) { }
            return this.Customizable = scope;
        },
        init() {
            if (!("CustomizableUI" in window) || !("gCustomizeMode" in window))
                return;
            ucf_custom_script_win.unloadlisteners.push("specialwidgets");
            window.addEventListener("customizationready", this);
        },
        destructor() {
            window.removeEventListener("customizationready", this);
        },
        handleEvent(e) {
            this[e.type](e);
        },
        customizationchange() {
            clearTimeout(this._timer);
            this._timer = setTimeout(() => {
                this.createSpecialWidgets();
            }, 1000);
        },
        customizationready() {
            if (!this.Customizable)
                return;
            this.createSpecialWidgets();
            window.addEventListener("customizationchange", this);
            window.addEventListener("customizationending", this);
        },
        customizationending() {
            window.removeEventListener("customizationchange", this);
            window.removeEventListener("customizationending", this);
        },
        createSpecialWidgets() {
            try {
                let fragment = document.createDocumentFragment();
                if (this.findSpecialWidgets("spring")) {
                    let spring = this.Customizable.createSpecialWidget("spring", document);
                    spring.setAttribute("label", "Растягивающийся интервал");
                    fragment.append(gCustomizeMode.wrapToolbarItem(spring, "palette"));
                }
                if (this.findSpecialWidgets("spacer")) {
                    let spacer = this.Customizable.createSpecialWidget("spacer", document);
                    spacer.setAttribute("label", "Интервал");
                    fragment.append(gCustomizeMode.wrapToolbarItem(spacer, "palette"));
                }
                if (this.findSpecialWidgets("separator")) {
                    let separator = this.Customizable.createSpecialWidget("separator", document);
                    separator.setAttribute("label", "Разделитель");
                    fragment.append(gCustomizeMode.wrapToolbarItem(separator, "palette"));
                }
                gCustomizeMode.visiblePalette.append(fragment);
            } catch (e) {}
        },
        findSpecialWidgets(string) {
            try {
                if (!gCustomizeMode.visiblePalette.querySelector(`toolbar${string}[id^="customizableui-special-${string}"]`))
                    return true;
            } catch (e) {}
            return false;
        }
    },
    autohidesidebar: {
        events: ["dragenter", "drop", "dragexit", "MozLayerTreeReady"],
        init() {
            var sidebar = this.sidebar = document.querySelector("#sidebar-box");
            if (!sidebar) return;
            for (let type of this.events)
                sidebar.addEventListener(type, this);
            ucf_custom_script_win.unloadlisteners.push("autohidesidebar");
            var popup = this.popup = document.querySelector("#sidebarMenu-popup");
            if (!popup) return;
            popup.addEventListener("popupshowing", this);
        },
        destructor() {
            var sidebar = this.sidebar;
            for (let type of this.events)
                sidebar.removeEventListener(type, this);
            if (!this.popup) return;
            this.popup.removeEventListener("popupshowing", this);
        },
        handleEvent(e) {
            this[e.type](e);
        },
        MozLayerTreeReady(e) {
            if (e.originalTarget?.id == "webext-panels-browser" && !this.sidebar.hasAttribute("sidebardrag")) {
                window.addEventListener("mousedown", () => {
                    this.drop();
                }, { once: true });
                this.dragenter();
            }
        },
        popupshowing() {
            this.popup.addEventListener("popuphidden", () => {
                this.drop();
            }, { once: true });
            this.dragenter();
        },
        dragenter() {
            if (!this.sidebar.hasAttribute("sidebardrag"))
                this.sidebar.setAttribute("sidebardrag", "true");
        },
        drop() {
            if (this.sidebar.hasAttribute("sidebardrag"))
                this.sidebar.removeAttribute("sidebardrag");
        },
        dragexit(e) {
            var sidebar = this.sidebar;
            var boxObj = sidebar.getBoundingClientRect(), boxScrn = !sidebar.boxObject ? sidebar : sidebar.boxObject;
            if ((!e.relatedTarget || e.screenY <= (boxScrn.screenY + 5) || e.screenY  >= (boxScrn.screenY + boxObj.height - 5)
                || e.screenX <= (boxScrn.screenX + 5) || e.screenX >= (boxScrn.screenX + boxObj.width - 5))
                && sidebar.hasAttribute("sidebardrag"))
                sidebar.removeAttribute("sidebardrag");
        }
    },
};

if (window.document.readyState != "complete") {
    window.addEventListener("load", function load() {
        ucf_custom_script_win.load();
    }, { once: true });
} else
    ucf_custom_script_win.load();
(async () => {
            var loadscript = (relpath, obj) => {
                try {
                    Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, obj, "UTF-8");
                    return true;
                } catch(e) { }
                return false;
            },
            load_scripts_by_url = {
                browser: win => {
                    //>>>>>>>>>>| Этот блок требуется для боковой панели и др., очистите строку ниже если он нужен |>>>>>>>>>>
                    /*
                    var box = document.querySelector("#browser") || window;
                    var listener = e => {
                        var doc = e.target || ({});
                        load_scripts_by_url[doc.documentURI]?.(doc.defaultView);
                    };
                    box.addEventListener("pageshow", listener);
                    this.loadscriptswinandsidebar = {
                        destructor() {
                            box.removeEventListener("pageshow", listener);
                        }
                    };
                    this.unloadlisteners.push("loadscriptswinandsidebar");
                    /* <<<<<<<<<<<<<<<<<<<< */
                    
                    //>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>>
                    loadscript("ucf_user_script.js", this);
                    loadscript("ucf_SidebarTabs.js", this) && this.unloadlisteners.push("sidebar_tabs");

                    //<<<<<<<<<<<<<<<<<<<<
                },
                //>>>>>>>>>>| Загрузка скриптов для др. документов |>>>>>>>>>>
                "chrome://browser/content/places/bookmarksSidebar.xhtml": win => {
                    // боковая панель закладок

                },
                "chrome://browser/content/places/historySidebar.xhtml": win => {
                   // боковая панель истории

                },
                //<<<<<<<<<<<<<<<<<<<<
            };
            load_scripts_by_url.browser(window);
        })();


Загрузчик не там где должен, это ещё ладно,
но в нем же даже не подключен alternative_searchbar.uc.js


Попробую ещё раз, понятно что 60 лет но глаза то у вас видят или нет?
Вот код загрузчика изменять уже ничего не надо

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

Выделить код

Код:

(async () => {
            var loadscript = (relpath, obj) => {
                try {
                    Services.scriptloader.loadSubScript(`chrome://user_chrome_files/content/custom_scripts/${relpath}`, obj, "UTF-8");
                    return true;
                } catch(e) { }
                return false;
            },
            load_scripts_by_url = {
                browser: win => {
                    //>>>>>>>>>>| Загрузка скриптов для browser.xhtml |>>>>>>>>>>
                    loadscript("alternative_searchbar.uc.js", win);

                    //<<<<<<<<<<<<<<<<<<<<
                },
            };
            load_scripts_by_url.browser(window);
        })();


Добавить его надо в custom_script_win.js туда где комментарий // Здесь может быть ваш код который сработает по событию "load" не раньше
В alternative_searchbar.uc.js изменить значение этой переменной на true
var old_search_engine_selection_popup = true; // show old search engine selection popup (true) or not (false)
если нужно старое меню с поисковиками для их переключения


Да и перезапуск с очисткой не забудьте

Отредактировано Vitaliy V. (10-07-2021 00:53:43)

Отсутствует

 

№1575710-07-2021 01:46:10

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 661
UA: Firefox 54.0

Re: Custom Buttons

Vitaliy V.
Все. Спасибо. Больше не буду беспокоить.
Бесполезно все это. Ни хрена не выходит.
Раз тупой, буду сидеть на том, что есть.
Удачи вам!

Добавлено 10-07-2021 01:56:26
Может хотя бы кнопку Search and open, кто поправит для FF84

Отредактировано vv07 (10-07-2021 01:56:26)

Отсутствует

 

№1575810-07-2021 08:48:02

momo2000
Участник
 
Группа: Members
Зарегистрирован: 03-09-2015
Сообщений: 157
UA: Firefox 89.0

Re: Custom Buttons

vv07
Попробуйте по методу  xiaoxiaoflood
Вот готовое решение scripts.7z

1. Заменить или добавить файлы из архива (где находится папка профиля показано на скринах)
2. Очистить кэш запуска (показано на скринах)
3. Подключить нужный скрипт через кнопку на панели (показано на скринах)
4. В самом файле alternative_searchbar.uc.js или alternative_searchbar_fx78-84_old.uc.js тоже есть настройки

Например
var show_search_engine_names = true; // show search engine names (true) or not (false)

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

screenshot_2021-07-10_002.png
2021-07-10_104003.jpg

Отредактировано momo2000 (10-07-2021 08:49:01)

Отсутствует

 

№1575910-07-2021 12:46:49

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 661
UA: Firefox 54.0

Re: Custom Buttons

momo2000
И вам спасибо. Не стоит больше тратить время на эту тему.
Подозреваю, что проблема непосредственно в самом браузере, чисто индивидуально.
Ваш вариант срабатывает частично. Постараюсь подробнее.
В момент включения, через меню кнопки, появляются иконки, но после перезагрузки пропадают.
Попытка включить по новой, дает результат, через несколько ребутов и снова пропадает.

Отсутствует

 

№1576010-07-2021 13:08:24

momo2000
Участник
 
Группа: Members
Зарегистрирован: 03-09-2015
Сообщений: 157
UA: Firefox 89.0

Re: Custom Buttons

vv07
В самом файле alternative_searchbar.uc или alternative_searchbar_fx78-84_old.uc.js измените настройки и поисковики будут отображаться правильно сразу после запуска.

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

// Configuration area - start (all 'false' by default)
var clear_searchbar_after_search = false; // clear input after search (true) or not (false)
var revert_to_first_engine_after_search = true; // revert to first engine (true) or not (false)
var old_search_engine_selection_popup = true; // show old search engine selection popup (true) or not (false)
var select_engine_by_scrolling_over_button = false; // select search engine by scrolling mouse wheel over search bars button (true) or not (false)
var select_engine_by_click_oneoffs_button = true;
var hide_oneoff_search_engines = false; // hide 'one off' search engines (true) or not (false)
var hide_addengines_plus_indicator = false; // hide add engines '+' sign (true) or not (false)
var hide_placeholder = false; // hide placeholder (true) or not (false)
var switch_glass_and_engine_icon = true; // swap icons of search engine button and go button (true) or not (false)
var show_search_engine_names = true; // show search engine names (true) or not (false)
var show_search_engine_names_with_scrollbar = true; // show search engine names with scrollbars (true) or not (false)
var show_search_engine_names_with_scrollbar_height = '170px'; // higher values show more search engines
var initialization_delay_value = 100; // some systems might require a higher value than '1' second (=1000ms) and on some even '0' is enough
var searchsettingslabel = "Change Search Settings";
// Configuration area - end

Кстати, гляньте и другие скрипты, через userChromeJS Manager от xiaoxiaoflood их легко подключать

Отсутствует

 

№1576110-07-2021 13:27:39

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 661
UA: Firefox 54.0

Re: Custom Buttons

momo2000
Хорошо, попробую поэкспериментировать.
Просто изначально речь шла, только var show_search_engine_names = true; // show search engine names (true) or not (false)
И вот еще что. Только сейчас заметил, что исчезла кнопка с панели. Осталась в меню, но как то неудобно
Почему такое могло произойти и как вернуть? Подскажите пожалуйста
PS Есть все таки правда в этой никчемной жизни :rock:
392d0cf58795.jpg
Хоть и не совсем так, как на старых версиях (иконки справа почему то), но и то хлеб.
Браво :beer: momo2000

Отредактировано vv07 (10-07-2021 13:52:13)

Отсутствует

 

№1576210-07-2021 15:36:57

momo2000
Участник
 
Группа: Members
Зарегистрирован: 03-09-2015
Сообщений: 157
UA: Firefox 89.0

Re: Custom Buttons

vv07
Тада все false кроме old_search_engine_selection_popup

Выделить код

Код:

var clear_searchbar_after_search = false; // clear input after search (true) or not (false)
var revert_to_first_engine_after_search = false; // revert to first engine (true) or not (false)
var old_search_engine_selection_popup = true; // show old search engine selection popup (true) or not (false)
var select_engine_by_scrolling_over_button = false; // select search engine by scrolling mouse wheel over search bars button (true) or not (false)
var select_engine_by_click_oneoffs_button = false;
var hide_oneoff_search_engines = false; // hide 'one off' search engines (true) or not (false)
var hide_addengines_plus_indicator = false; // hide add engines '+' sign (true) or not (false)
var hide_placeholder = false; // hide placeholder (true) or not (false)
var switch_glass_and_engine_icon = false; // swap icons of search engine button and go button (true) or not (false)
var show_search_engine_names = false; // show search engine names (true) or not (false)
var show_search_engine_names_with_scrollbar = false; // show search engine names with scrollbars (true) or not (false)
var show_search_engine_names_with_scrollbar_height = '170px'; // higher values show more search engines
var initialization_delay_value = 100; // some systems might require a higher value than '1' second (=1000ms) and on some even '0' is enough
var searchsettingslabel = "Change Search Settings";

Это настройки самой панели, например
var clear_searchbar_after_search = false  если поставить true ,то очищать поле сразу после поиска, неудобно, если искать по нескольким поисковикам
revert_to_first_engine_after_search = false если поставить true ,то сразу после поиска вернётся на дефолтный поисковик, тоже неудобно, или нет)
var old_search_engine_selection_popup = false это как раз true, чтобы поисковики были списком
var hide_addengines_plus_indicator = false если поставить true, то скроется значок добавления поисковика, когда на сайте есть такая возможность( маленький зеленый плюс на значке, который отвлекает)
var switch_glass_and_engine_icon = false если поставить true, то значок поисковика переместится вправо, как на вашем скрине
ит.д. остальные я не разбирался)

Отредактировано momo2000 (10-07-2021 15:41:03)

Отсутствует

 

№1576311-07-2021 05:06:25

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 661
UA: Firefox 54.0

Re: Custom Buttons

Тада все false кроме old_search_engine_selection_popup

Здорово :rock::beer:
PS А у вас нет случайно контакта с автором? Может он сможет сварганить, полосу прогресса?
Я спрашивал http://forum.mozilla-russia.org/viewtop … 08#p792308, но никто не взялся увы.

Отредактировано vv07 (11-07-2021 05:17:25)

Отсутствует

 

№1576411-07-2021 08:11:33

momo2000
Участник
 
Группа: Members
Зарегистрирован: 03-09-2015
Сообщений: 157
UA: Firefox 89.0

Re: Custom Buttons

vv07
Гляньте расширение Load Progress Bar
В настройках можно изменить цвет, ширину и положение верх-низ
Это, конечно, не то что нужно, но всё же)

Отсутствует

 

№1576511-07-2021 08:59:34

vv07
Участник
 
Группа: Members
Зарегистрирован: 07-11-2007
Сообщений: 661
UA: Firefox 54.0

Re: Custom Buttons

momo2000
Я как раз его и поставил на замену. Но это действительно не то. Можно сказать, вообще другое оформление.
Прежний в виде перемещаемого бара, который можно поставить на любую панель, гораздо удобнее был.
Ну и качественнее работал.
Ладно. Жаль очень, Хотя и не единственная потеря. Пожалуй самого недостающего расширения,
которого реально будет не хватать. Это почтовый клиент Simple Mail.
Без остального как нибуть проживу. Хотя тяжело очень, когда привыкаешь к определеному функционалу.
Спасибо за помощь

Отсутствует

 

№1576611-07-2021 22:41:38

egorsemenov06
Участник
 
Группа: Members
Зарегистрирован: 12-06-2018
Сообщений: 255
UA: Firefox 89.0

Re: Custom Buttons

del.

Отредактировано egorsemenov06 (11-07-2021 22:44:58)

Отсутствует

 

№1576713-07-2021 14:05:10

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

Re: Custom Buttons

Dumby пишет

Вот в 91 выпилили nsIEditorObserver, и будет мусор в консоли
при переходе по первым трём вкладкам в CB-редакторе, надо бы 18-ю собрать сподобиться.

И ещё document.popupNode, а расширение его устанавливает.
Нет, ну ничего страшного, просто как-то неправильно получается.


Custom Buttons 0.0.7.0.0.18, paxmod и bootstrap в zip-папке.

Отсутствует

 

№1576816-07-2021 18:38:02

Alex_one
Участник
 
Группа: Members
Зарегистрирован: 27-09-2015
Сообщений: 123
UA: Firefox 90.0

Re: Custom Buttons

Установил [firefox] v.90.0 и перестала работать кнопка:
Автоматически очистить панель поиска после запуска поиска Enter.
(Колесиком мыши работает.)
Dumby
Если возможно, подправьте пожалуйста.

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

Выделить код

Код:

(bar => {
    if (!bar) return;
    var events = ["mouseenter", "focus"], init = e => {
        for(var type of events) removeEventListener(type, init, false, bar);

        var key = "telemetrySearchDetails", value = bar[key], hasListener, btn;
        var box = bar.textbox, set = (o, k = "value", v = "") => o[k] = v;
        var clear = () => setTimeout(() => set(box), 50, hasListener = box.popup.removeEventListener("popuphidden", clear, false));

        Object.defineProperty(bar, key, {
            configurable: true, enumerable: true, get: () => value, set(val) {
                val === null && !hasListener && setTimeout(() => {
                    if (box.popup.state != "open") set(box);
                    else hasListener = !box.popup.addEventListener("popuphidden", clear, false);
                }, 50);
                return value = val;
            }
        });
        addDestructor(() => delete bar[key] && set(bar, key, value));

        if (!(btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button"))) return;
        var hm = e => e.ctrlKey || e.shiftKey || e.altKey || e.metaKey;

        addEventListener("click", e =>
            !Services.prefs.getBoolPref("browser.search.openintab")
            || e.button || hm(e) || e.originalTarget != btn
            || e.stopPropagation(btn.dispatchEvent(new MouseEvent("click", {ctrlKey: true, metaKey: true})))
        , true, btn.parentNode);
        addEventListener("contextmenu", e => hm(e) || e.preventDefault(set(box)), false, btn);
    }
    for(var type of events) addEventListener(type, init, false, bar);
})(BrowserSearch.searchBar);



// Очистить панель адреса или поиска прокруткой колёсиком мыши на панели
["urlbar", "searchbar"].forEach(el=> document.getElementById(el).onwheel=e=> e.target.value = "");

Отсутствует

 

№1576916-07-2021 21:56:12

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

Re: Custom Buttons

Dumby.
Вы когда-то по моей просьбе написали вот такой код: https://forum.mozilla-russia.org/viewto … 48#p781048
Возможно ли его переделать под 90 версию [firefox] ?


«The Truth Is Out There»

Отсутствует

 

№1577017-07-2021 19:52:27

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

Re: Custom Buttons

Alex_one пишет

Автоматически очистить панель поиска после запуска поиска Enter.

Тогда Enter и надо отслеживать

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

Выделить код

Код:

(sel => {
	var sb = document.getElementById("searchbar") ||
		gNavToolbox.palette.querySelector("#searchbar");
	var clear = () => sb.value = "";
	addEventListener("keydown", e =>
		e.key != "Enter" || e.repeat || !sb.value ||
		sb.textbox.popup.querySelector(sel) || setTimeout(clear, 100)
	, true, sb || 1);
})(':is(#searchbar-anon-search-settings,.searchbar-engine-one-off-add-engine)[selected=true]');

unter_officer пишет

Возможно ли его переделать под 90 версию [firefox] ?

Лучше бы сначала в  CSS-теме спросить,
может это стилем можно сделать.

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

Выделить код

Код:

(function tlcrop(ctor) {
	var mod = (prop, repls) => {
		var desc = Object.getOwnPropertyDescriptor(ctor, prop);
		var {get, value} = desc, newDesc = {...desc};

		var txt = get ? `(${get})`.replace("get", "function") : value;
		for(var repl of repls) txt = txt.replace(...repl);
		get
			? newDesc.get = eval(txt)
			: newDesc.value = txt;

		Object.defineProperty(ctor, prop, newDesc);
		return desc;
	}
	var n = document.createElement("n"), s = new XMLSerializer();
	var enc = attr => {
		n.setAttribute("a", attr);
		return s.serializeToString(n).slice(43, -6);
	}
	var formatter = new Localization(["browser/browser.ftl"], true);
	var markup = mod("markup", [
		[/<label /g, '$&crop="end" flex="1" '],
		[
			/data-l10n-id="(browser-tab-audio-[^"]+)"/g,
			(s, id) => `value="${enc(formatter.formatValueSync(id))}"`
		]
	]);
	var attrs = mod("inheritedAttributes", [[/text=label/g, "$&,value=label"]]);
	
	var reInitTabs = () => {
		delete ctor._fragment;
		delete ctor._flippedInheritedAttributes;
		for(var tab of gBrowser.tabs) delete tab._initialized, tab.initialize();
	}
	reInitTabs();

	var proto = ctor.prototype, key = "setSecondaryTabTooltipLabel", func = proto[key];
	var setVal = lab => lab.setAttribute("value", lab.textContent);
	proto[key] = function() {
		func.apply(this, arguments);
		setTimeout(setVal, 50, this.querySelector(".tab-icon-sound-tooltip-label"));
	}
	var topic = "intl:app-locales-changed";
	var obs = () => {
		var ind = self._destructors.findIndex(d => d.destructor == destructor);
		self._destructors.splice(ind, 1);
		destructor();
		tlcrop(ctor);
	}
	var destructor = () => {
		proto[key] = func;
		Services.obs.removeObserver(obs, topic);
		Object.defineProperty(ctor, "markup", markup);
		Object.defineProperty(ctor, "inheritedAttributes", attrs);
		reInitTabs();
	}
	addDestructor(destructor);
	Services.obs.addObserver(obs, topic);
})(gBrowser.selectedTab.constructor);

Отсутствует

 

№1577117-07-2021 22:23:21

Alex_one
Участник
 
Группа: Members
Зарегистрирован: 27-09-2015
Сообщений: 123
UA: Firefox 90.0

Re: Custom Buttons

Dumby,
Извиняюсь, не знаю почему написал Enter. :(
Хотелось бы, чтоб он всегда срабатывал: Вставить и искать и по клику на стрелку.

скрытый текст
17-07-2021_2215229051a858678fa0cb.jpg

Отсутствует

 

№1577218-07-2021 03:51:39

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

Re: Custom Buttons

Dumby пишет

Лучше бы сначала в  CSS-теме спросить,
может это стилем можно сделать.

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

Выделить код

Код:

(function tlcrop(ctor) {
	var mod = (prop, repls) => {
		var desc = Object.getOwnPropertyDescriptor(ctor, prop);
		var {get, value} = desc, newDesc = {...desc};

		var txt = get ? `(${get})`.replace("get", "function") : value;
		for(var repl of repls) txt = txt.replace(...repl);
		get
			? newDesc.get = eval(txt)
			: newDesc.value = txt;

		Object.defineProperty(ctor, prop, newDesc);
		return desc;
	}
	var n = document.createElement("n"), s = new XMLSerializer();
	var enc = attr => {
		n.setAttribute("a", attr);
		return s.serializeToString(n).slice(43, -6);
	}
	var formatter = new Localization(["browser/browser.ftl"], true);
	var markup = mod("markup", [
		[/<label /g, '$&crop="end" flex="1" '],
		[
			/data-l10n-id="(browser-tab-audio-[^"]+)"/g,
			(s, id) => `value="${enc(formatter.formatValueSync(id))}"`
		]
	]);
	var attrs = mod("inheritedAttributes", [[/text=label/g, "$&,value=label"]]);
	
	var reInitTabs = () => {
		delete ctor._fragment;
		delete ctor._flippedInheritedAttributes;
		for(var tab of gBrowser.tabs) delete tab._initialized, tab.initialize();
	}
	reInitTabs();

	var proto = ctor.prototype, key = "setSecondaryTabTooltipLabel", func = proto[key];
	var setVal = lab => lab.setAttribute("value", lab.textContent);
	proto[key] = function() {
		func.apply(this, arguments);
		setTimeout(setVal, 50, this.querySelector(".tab-icon-sound-tooltip-label"));
	}
	var topic = "intl:app-locales-changed";
	var obs = () => {
		var ind = self._destructors.findIndex(d => d.destructor == destructor);
		self._destructors.splice(ind, 1);
		destructor();
		tlcrop(ctor);
	}
	var destructor = () => {
		proto[key] = func;
		Services.obs.removeObserver(obs, topic);
		Object.defineProperty(ctor, "markup", markup);
		Object.defineProperty(ctor, "inheritedAttributes", attrs);
		reInitTabs();
	}
	addDestructor(destructor);
	Services.obs.addObserver(obs, topic);
})(gBrowser.selectedTab.constructor);

Dumby, спасибо. Как всегда всё отлично.


P.S. В прошлый раз, перед тем как я попросил вас написать код, я уже обращался в тему CSS. Там мне было отвечено, что такого сделать средствами CSS нельзя.


«The Truth Is Out There»

Отсутствует

 

№1577318-07-2021 11:09:32

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

Re: Custom Buttons

Alex_one пишет

Вставить и искать и по клику на стрелку

Добавил

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

Выделить код

Код:

(sel => {
	var sb = document.getElementById("searchbar") ||
		gNavToolbox.palette.querySelector("#searchbar");
	var clear = setTimeout.bind(window, () => sb.value = "", 75);

	addEventListener("keydown", e =>
		e.key != "Enter" || e.repeat || !sb.value ||
		sb.textbox.popup.querySelector(sel) || clear()
	, true, sb || 1);

	var sels = {
		click: ".search-go-button",
		command: ".searchbar-paste-and-search"
	};
	var listener = e => e.button < 2 && e.target.matches(sels[e.type]) && clear();
	for(var type in sels) addEventListener(type, listener, false, sb);

})(':is(#searchbar-anon-search-settings,.searchbar-engine-one-off-add-engine)[selected=true]');

Отсутствует

 

№1577418-07-2021 11:41:13

Alex_one
Участник
 
Группа: Members
Зарегистрирован: 27-09-2015
Сообщений: 123
UA: Firefox 90.0

Re: Custom Buttons

Dumby
Спасибо большое!
Всё красиво!
thank-you.gif

Отсутствует

 

№1577518-07-2021 12:52:35

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

Re: Custom Buttons

unter_officer пишет

В прошлый раз, перед тем как я попросил вас написать код, я уже обращался в тему CSS. Там мне было отвечено, что такого сделать средствами CSS нельзя.

Но теперь можно

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

Выделить код

Код:

.tab-label-container {
    mask: none !important;
}
.tab-secondary-label {
    overflow: hidden !important;
}
.tab-secondary-label > .tab-icon-sound-label,
.tab-label-container > .tab-label {
    display: inline-block;
    -moz-box-flex: 1 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    min-width: 0 !important;
    line-height: 1.25em !important;
    height: 1.25em !important;
    margin: 0 !important;
}
.tab-close-button {
    padding: 5px !important;
    width: 20px !important;
    height: 20px !important;
}
.tab-close-button:not(:hover) {
    padding-inline-start: 0 !important;
    width: 15px !important;
}

Отредактировано Vitaliy V. (01-08-2021 18:51:14)

Отсутствует

 

Board footer

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