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

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

Сustom Buttons » Custom Buttons » 23-10-2020 21:27:23

ruslaw пишет

так и во фрейме, тогда в качестве homepage использую:
var homepage = content.frames[1].location.href;


if (parent.frames.length==0)

Непонятно что за parent и почему второй фрейм, а не первый.
Хорошо, допустим второй

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

Выделить код

Код:

var {frames} = content, ind = 1;
var entries = (frames[ind] || frames).document.documentURIObject
	.QueryInterface(Ci.nsIFileURL).file.parent.directoryEntries;

var array = [];
while(entries.hasMoreElements()) {
	var entry = entries.getNext().QueryInterface(Ci.nsIFile);
	entry.isFile() && array.push(entry.leafName);
}
alert(array.join("\n"));

CSS-стили » Как в правой части адресной строки скрыть все, кроме "звездочки"? » 20-10-2020 13:30:39

sandro79 пишет

Полностью если скрыть блок #page-action-buttons, то и звёздочка пропадает, как её исключить, если возможно, я не знаю, только всё по отдельности.

:/

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

Выделить код

Код:

#urlbar-input-container > moz-input-box ~ :not(#page-action-buttons),
#urlbar-input-container > #page-action-buttons > :not(#star-button-box) {
	display: none !important;
}

Сustom Buttons » Custom Buttons » 27-09-2020 15:23:29

Ходьба по кругу какая-то.

Andrey_Krropotkin пишет

ничего не пойму простой код не хочет работать, не появляется в меню

Я же писал, что будут всё больше совать в <html:template>
А добро внутри него не является частью документа. Дошло время и до гамбургера.
Да вот совсем недавно подобное обсуждалось, неужели не прояснительно.


Можно записать похуже, но попроще, и можно даже без getElementById,
но тогда обратная совместимость пропадёт.

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

Выделить код

Код:

...
    //var it = document.getElementById("appMenu-quit-button");
    var it = document.getElementById("appMenu-quit-button") || PanelMultiView.getViewNode(document, "appMenu-quit-button");

ошибка синтактического анализа XML

Опять же, писал про это, и даже какой-то патч пробовал набросать.
Ошибки не было потому, что в ru локали выпиленные <!ENTITY> оставались.
В

Сustom Buttons » Custom Buttons » 23-09-2020 11:16:04

solombala
Bug 1632448 - Remove window.external.AddSearchProvider code

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

Выделить код

Код:

//Services.search.addEngine("data:text/xml," + encodeURIComponent(`
(Services.search.addOpenSearchEngine || Services.search.addEngine)("data:text/xml," + encodeURIComponent(`

Сustom Buttons » Custom Buttons » 28-08-2020 17:16:08

Garalf пишет

Отключаю в config.js:
try {
    Components.interfaces.nsIUDPSocketChild ||
    Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment).set(
        "MOZ_FORCE_DISABLE_E10S",
        Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch)
            .getBoolPref("browser.tabs.remote.autostart", true) ? "" : "1"
    );
} catch(ex) {}

Не-не, это (псевдо)девелоперский код, рефлексирующий pref —> env
Как установщик для «холодного старта» устарел (убит, неэффективен) сто лет назад.
Но, при замене "1" на версию, наверно, будет работать в цепочке рестартов.


Garalf пишет

и portable.ini
MOZ_FORCE_DISABLE_E10S=1

Вот здесь пробуй
MOZ_FORCE_DISABLE_E10S=81.0
и отпишись о результате.

Сustom Buttons » Custom Buttons » 28-08-2020 09:16:06

Garalf пишет

Dumby, а где править надо?

Ну я же не телепат, а ты не рассказал как отключаешь.
Править надо там, где устанавливается значение переменной среды.
Вместо единицы — номер версии Firefox.

Сustom Buttons » Custom Buttons » 27-08-2020 00:22:15

_zt пишет

А вы универсальную кнопочку не делали для включения/выключения любого расширения, например, по uuid. C иконкой (а если с двумя, по статусу, то вообще шикарно будет), что бы еще и в ucf работала.
   
Хотел примеры привести, да и так понятно, что некоторые аддоны легче включить жмякнув по кнопке, чем лезть в меню, да и тех что иногда требуется отключить, а авторами это не предусмотрено (нет значка), не мало.
   
Если не делали, то большая просьба сделать, как время будет.

Ну, предусмотренное авторами отключение, это, наверно, не то же самое, что выключить сам аддон.
А выключатель аддона с иконкой да, вроде пытался сочинить для CB, не знаю нормально ли работает, но могу
попробовать какую-нибудь диспетчерскую шапку добавить, типа как бы код — генератор переключающих виджетов.


Статусов, вообще-то, больше двух. Важный статус — «не установлено/удалено», плюс ещё парочка неважных.
Вобщем, задумано так: иконка берётся из статуса рядом с id'шником, если нет — из статуса defa

Сustom Buttons » Custom Buttons » 25-08-2020 14:15:16

solombala пишет

или версия новая?

Ну как новая, месяц скоро будет. Новее пока нет (не требуется).

Сustom Buttons » Custom Buttons » 18-08-2020 10:21:32

Dobrov пишет

Общий вопрос - нужна кнопка, которая откроет html-файл, расположенный например, в profile/chrome
Нужно открыть справку в новой вкладке, а по повторному клику закрыть (если во вкладке открыта именно htm-справка)

Звучит как-то так

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

Выделить код

Код:

this._handleClick = () => {

	var fileName = "help.html";
	var params = {
		inBackground: false,
		relatedToCurrent: true
	};

	var file = Services.dirsvc.get("UChrm", Ci.nsIFile);
	file.append(fileName);
	var uri = Services.io.newFileURI(file);
	var open = window.openTrustedLinkIn || openUILinkIn;
	(this._handleClick = () => uri.equals(gBrowser.currentURI)
		? gBrowser.removeCurrentTab() : open(uri.spec, "tab", params)
	)();
}

Сustom Buttons » Custom Buttons » 17-08-2020 09:23:51

sandro79 пишет

javascript.options.asyncstack — true в 79+ теперь по умолчанию

Да, вижу (bug). Поставили true и выключили (псевдопарадокс).
На сей раз предлагать включить обратно не стану,
поскольку запугали, что мол это не по-перформансу.


Может тогда попробуй ещё более грубое

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

Выделить код

Код:

try {((obj, key) => {
	var funcs = [eval(`(${obj[key]})`.replace(" ", " function ").replace("unfiledGuid", "menuGuid")), obj[key]];
	obj[key] = (...args) => funcs[+Components.stack.formattedStack.includes("nsContextMenu")](...args);
})(PlacesCommandHook, "bookmarkPage");} catch(ex) {Cu.reportError(ex);}

Dobrov пишет

QuickSettings не работает на Basilisk

Ага, на Firefox 2.0.0.8 тоже не работает.
А вообще который? Я вот попробовал поставить (как кнопку) тот,
что последний д

Сustom Buttons » Custom Buttons » 16-08-2020 19:40:53

_zt
[spoiler]

Из-за перевода? Как их увидеть? Если об этом речь.

Не-не, увидеть очень просто: если открыть во вкладке base64 адрес с кодом
из этого поста, и приглядеться к содержимому, то видно, что оно словно
пропущено через подготовщик для XML. Самое заметное — &quot; вместо кавычек.


Можно удалить, ничего не поломав?

Думаю да, на эти строки ничего не завязано, закомментировал.


Согласен с Dobrov, быстрое переключение "скрывать"/"не скрывать" меню после клика, тут не помешало бы. Для тестов удобнее как сейчас, а при постоянном использовании нескрываемое меню будет отвлекать.
А интересно, нельзя ли эту опцию во вторичное меню вывести? ) Например, добавлением этой настройки в about:config и последующем ее чтением.

OK, попробую добавить во вторичное меню.
Сам этот пункт, при переключении, закрытие меню не вызывает (фишка такая).
Предусмотрено не закрыв

Сustom Buttons » Custom Buttons » 15-08-2020 13:04:43

firepox пишет

код вставил инициализацию -  ничего не сохраняются вообще

Ну не знаю, может CB какой-то несоответствующий.
Тогда попробуй изменить вкладку Код.

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

Выделить код

Код:

(f => {
    var url = "http://site.ru";

    var br = (gBrowser.selectedTab = gBrowser.addTab(url)).linkedBrowser;
    br.addEventListener("pageshow", () => setTimeout(
        () => gBrowser.selectedBrowser == br && br.currentURI.spec == url && f()
    , 0), {once: true});
})(() => {

//======================
// Здесь расположить
// весь код вкладки Код.
//======================

});


_zt
[spoiler]
Что-то по клику на <menu> не готов сказать, что сложилась
у меня какая-то полная ясность.
Сделал так: если userChoice отсутствует, то клик не делает ничего,
иначе — переключает на userChoice, а если текущее значение
уже совпадает с userChoice, тогда переключает на userAlt, если таковой имеется.

Иконку UserAlt прописал и она работает, но вы проверьте за мной

Вот эта строка:

Сustom Buttons » Custom Buttons » 14-08-2020 16:20:19

firepox пишет

пробовал в начало кода добавлять это:
gBrowser.selectedTab = gBrowser.addTab('http://site.ru');
Не работает)

Направление мысли верное, но следует дождаться пока загрузится.
Попробуй разместить в Инициализации, и если «нужный сайт»
прям после загрузки ещё не готов быть снапшотнутым, тогда
подними таймаут с нуля до какого-нибудь эмпирического значения.

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

Выделить код

Код:

(exec => addEventListener("click", e => {
	if (e.button) return;
	e.preventDefault();

	var url = "http://site.ru";

	var br = (gBrowser.selectedTab = gBrowser.addTab(url)).linkedBrowser;
	br.addEventListener("pageshow", () => setTimeout(exec, 0, br, url), {once: true});

}, true, this))((br, url) => gBrowser.selectedBrowser == br
	&& br.currentURI.spec == url && custombutton.buttonCbExecuteCode(null, this, this.cbCommand)
);

Dobrov пишет

Хотелось бы совместить оба варианта - для _zt и для меня с методом londPress, они почему-то сильно различаются…

Ну, ты выразил пожелание что

Сustom Buttons » Custom Buttons » 13-08-2020 08:08:57

_zt пишет

во всех подменю выделение НЕ дефолтных значений курсивом?
Что бы, заглянул в подменю и сразу понятно было, где дефолт, а где все остальное.  На мой взгляд так логичнее было бы.

Если я ничего не упускаю, то для этого просто нет API, то есть
нет чего-то типа getDefaultPref(prefName) или isDefaultPref(prefName, prefValue)

Нельзя ли true-false в подменю (что бы все к единому стилю привести)
А освободившееся место в корневом меню слева, которое под иконку, неплохо было бы использовать как индикатор userChoice.
(Я там видел цветовое выделение "maroon", но цвет у меня не работает.)

Не работает "maroon" — значит, скорее всего, забито стилем, и тогда,
казалось бы, должно напрашиваться дописать в этот стиль что-то типа
menupopup[id^=QuickToggleAboutConfigSettings-] > [style*=maroon] > label {color: ...}


И, не совсем понятно про «индикатор userChoice», с одной стороны,
«освободившееся место» говорит о том, что нужен только для «true-false»,
с другой стороны, уп

Сustom Buttons » Custom Buttons » 12-08-2020 09:43:13

Dobrov пишет

пока не проверял в user_chrome_files от Виталия

Хмм, так в этом смысл задачи и был, ну пока там «(или)» не нарисовалось.

Надо, чтобы нажал на кнопку, переключил галочку и меню закрылось. Так работал мой оригинальный код…

Тогда зачем в коде пунктам меню проставляется атрибут closemenu=none ?


И нет, твой оригинальный код так не работает.
Там, по mouseup на пункте, проверяется его атрибут "{Popup, menuContext}.state",
и, по результату, идёт вызов метода на открытие или закрытие menupopup.
Затем, этому пункту ставится этот атрибут по результату вызова.
Таким образом, в общем случае, меню будет закрыто, если конкретный пункт
кликнут чётноё количество раз. Довольно странно, правда же?


Но, раз пожелание закрывающихся меню, хорошо, попробую модифицировать.
Вторая половина кода, на замену.
[spoiler][code]...
    return {
        label: "Quick toggle",
        id: "QuickToggleAboutConfigSettings",
        localized: false,
        image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEU

Сustom Buttons » Custom Buttons » 11-08-2020 19:56:58

firepox пишет

А можно чуть подправить, чтобы alert показывался секунд 5, и если по нему кликнуть - откроется сохраненная страница.

[spoiler][code]var saveToFile = this.stf || (this.stf = (suc => {
    suc.charset = "utf-8";
    var as = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
    var alertName = "Save_snapshot_to_html_alert";
    var file, id, obs = (s, topic) => {switch(topic) {
        case "alertshow": id = setTimeout(as.closeAlert, 5e3, alertName); break;
        case "alertfinished": id = file = null; break;
        case "alertclickcallback": clearTimeout(id);
            gBrowser.selectedTab = gBrowser.addTab(Services.io.newFileURI(file).spec);
    }};
    var notify = as.showAlertNotification.bind(
        as, null, "Страница сохранена на Рабочем столе", null, true, null, obs, alertName
    );
    var desk = Services.dirsvc.get("Desk", Ci.nsIFile);
    var fos = Components.Constructor("@mozilla.org/network/file-output-stream;1", "nsIFileOutp

Сustom Buttons » Custom Buttons » 10-08-2020 19:41:38

firepox пишет

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

Вот шляпа, всё надо проверять.
Недоглядел, что fileName кривой передаётся. Хорошо, весь
[spoiler][code]var saveToFile = this.stf || (this.stf = (suc => {
    suc.charset = "utf-8";
    var as = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
    var alertName = "Save_snapshot_to_html_alert";
    var notify = as.showAlertNotification.bind(
        as, null, "Страница сохранена на Рабочем столе", null, false, null, null, alertName
    );
    var desk = Services.dirsvc.get("Desk", Ci.nsIFile);
    var fos = Components.Constructor("@mozilla.org/network/file-output-stream;1", "nsIFileOutputStream", "init");
    return (html, name) => {
        var file = desk.clone()
        file.append(name);
        html = suc.ConvertFromUnicode(html);
        var stream = new fos(file, 0x02|0x20|0x08, 0o666, 0);
        stream.write(html, html.length);
        stream.close(

Сustom Buttons » Custom Buttons » 10-08-2020 19:03:01

firepox
Эээ...


firepox пишет

помогите подправить код

Заменить функцию saveToFile, видимо.
Она там в самом начале определяется.

Сustom Buttons » Custom Buttons » 10-08-2020 18:52:35

firepox пишет

пожалуйста, помогите подправить код.
нужно, чтобы при нажатии не было запроса где сохранить, а сразу сохранялось на рабочий стол ( C:\\Users\\USER\\Desktop\\)
и появлялось сообщение в углу - Страница сохранена на Рабочем столе.

[spoiler][code]var saveToFile = this.stf || (this.stf = (suc => {
    suc.charset = "utf-8";
    var as = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
    var alertName = "Save_snapshot_to_html_alert";
    var notify = as.showAlertNotification.bind(
        as, null, "Страница сохранена на Рабочем столе", null, false, null, null, alertName
    );
    var desk = Services.dirsvc.get("Desk", Ci.nsIFile);
    var fos = Components.Constructor("@mozilla.org/network/file-output-stream;1", "nsIFileOutputStream", "init");
    return (html, name) => {
        var file = desk.clone()
        file.append(name);
        html = suc.ConvertFromUnicode(html);
        var stream = new fos(file, 0x02|0x20|0x08, 0o666, 0);
        stream.write(html, html.length);
        stream.close();
        notify();

Сustom Buttons » Custom Buttons » 07-08-2020 14:06:19

Dobrov пишет

Смотрю капс-V опечатка не исправлена.
Почему? Я что-то непонятное написал?

Откуда лишние листенеры?

Что значит откуда? Так сделано.
Да, 26 пунктов меню (плюс 7 сепараторов) каждый из которых
рождён функцией CreateMenu, которая регистрирует в _handlers
по три листенера на события command, popupshowing, contextmenu.
Уже 99, мало что ли?

Можно как-то исключить создание ненужных?
То есть, сделать, чтобы в подменюшках подставлялись значения из about:config , но без лишних addEventListener ?

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


P.S. Заметил в кнопке интригующий комментарий:
«ЗАДАЧА 2: невозможно создать подменю с произвольными строками: меню > checkbox1, checkbox2, разделитель, radio1, radio2»
Никакая конечно не задача, а про

Сustom Buttons » Custom Buttons » 06-08-2020 09:16:14

egorsemenov06 пишет

Можно Вас попросить пожалуйста сделать для user_chrome_files кнопку Proxy

Разве что отдельным файлом.
Инициализацию в Proxy.js, а в custom_script.js
[spoiler][code]try {CustomizableUI.createWidget({
    label: "Proxy",
    image: "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aY

Сustom Buttons » Custom Buttons » 05-08-2020 12:22:39

Dobrov пишет

основной пункт меню всегда «Other», хотя должен подставляться

Ну так smval и smVal это не одно и то же.
И вообще, как-то многословно, на мой вкус.

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

Выделить код

Код:

`
		if (subMenu) {
			for (var smitem of subMenu.getElementsByTagName('menuitem')) {
				var smval = smitem.getAttribute('tooltiptext');
				smVal = smVal.replace(/\n.*/g,''); // оставить только первую строку
				smitem.setAttribute('checked', (val === smval) ? true : false);
			}
		}
`;
		if (subMenu) for(var smitem of subMenu.getElementsByTagName("menuitem"))
			smitem.setAttribute("checked", smitem.getAttribute("tooltiptext").replace(/\n.*/g, "") == val);


Вау, кнопка регистрирует в _handlers 103 (сто три!) листенера. Жесть.

Сustom Buttons » Custom Buttons » 05-08-2020 08:50:11

unter_officer пишет

Однако скрипт не срабатывает.

Ну да, я же говорю — бесполезно :).
Но, всё таки, немного любопытно почему не срабатывает.


Вот, провёл такой эксперимент на Firefox 78.0
Открыл новую пустую вкладку и скормил адресной строке
data: адрес (простая html'ка с двумя ссылками, которые ты предоставил).


Открыл веб-консоль (Ctrl+Shift+K) и запустил с js-терминала код.


ЛКМ по ссылке на странице — GET-запрос на invidio.us есть,
и в адресной строке, в конце концов, invidio.us тоже появляется.
А Ctrl+ЛКМ или СКМ — новая вкладка, и снова с invidio.us
Так же и на Firefox 52.0.


Попробуй повторить, если интересно. Лучше на чистом, по возможности.
В смысле, если так работает, то дело не в самом коде, а в чём-то другом, наверно.
[spoiler=url][code]data:text/html;charset=utf-8,%3C!DOCTYPE%20html%3E%0A%3Chtml%3E%0A%09%3Chead%3E%0A%09%09%3Ctitle%3ETest%20yt%20links%3C%2Ftitle%3E%0A%09%09%3Cmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 05-08-2020 00:43:35

voqabuhe пишет

У меня почему-то твой скрипт не работает [firefox] 79.0. Засунул его в custom_script.js, правильно, или куда его?

Да, засунул правильно.
И да, вот прям после установки не работает.
Нужно либо создать true настройку, либо вытащить и нажать кнопку.

CSS-стили » Настройка внешнего вида Firefox в userChrome.css » 04-08-2020 22:23:41

Vitaliy V. пишет

Вот такое придумалось

[spoiler]О, я тоже пытался придумать, и показалось приемлимым
использовать переопределение. Но не знаю, собственно,
что написать в контентской части, так, от балды разместил кой-что.


Вобщем, никаких эвент и мессадж листенеров,
вместо этого — врезка в TooltipTextProvider.prototype.
Ну, я просто на интерес показать, не как продукт, а как концепцию.
[code]try {CustomizableUI.createWidget(({
    label: "Href in tooltip",
    icons: {
        true: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//

Board footer

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