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

Будьте в курсе последних изменений в мире Mozilla, следя за нашим микроблогом в Twitter.

Скрипты » UCF-скрипты на этом форуме » 25-07-2021 16:29:13

sandro79 пишет

Да хотелось именно оригинальную иконку бабочки перегнать в svg. Зациклило меня на решении этой задачи.

Не помню уже откуда взял, но завалялась у меня эта бабочка в PNG, размером 170px на 170px.
Я попробовал поиграться с конвертором, однако без потери качества перегнать не удалось.
Попробуйте, может у вас что-то получится.
nnm-club-02.png

Сustom Buttons » Custom Buttons » 20-07-2021 15:09:54

Dumby пишет

[spoiler][code]custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EReload%20user%7BChrome%2C%20Content%7D.css%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAIpwAACKcBMsYCAwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAMwSURBVEiJ5dbNb5RVFMfxz3mmrYgYE0IN4IaKb4n4UqOwMCYu2JCoQVDiwoUrQ4j0xao7ExITQxRoodEFK1cmRkSE8AeYYKpEFF0YY4SiUSMRQW0sLe0818U8nekwHe3U7vhtnnNOzj3f89znPvderjVFK8npaSWrPSjpElahQzhvyrF4y++t1GqbF7DHOvQLj6Ozrt2EDutYRHAasMK0vXgWWZO0SX/7DlJf6Skp3UWcFeVRV4zG235tCZx6rDPtKLqqAN4XPhROm3DJEiG3LA6aKkZ14jUSKaOd1Gsco6Qz8vRiDDvTFJz63S13AjdVAg7JvBxDzs2RfrE2MP9ijolZijvJXo/h8pmmb5z6LZf7qICWJQNxwP5mM1OnzNdy03V1U0oi2x77y+/Wp16t3CDWgvDKvKGIQZepfO+iWBIpKG9s7HGW0k7dKgsJjsSQffOF1or4srAuS04U9jOp14amYGGgiF2Re6llaEWnMSbPNyl5DtNFQzvnBKdd2oRNhXt4ZvW1rCwfkbInY

Сustom Buttons » Custom Buttons » 19-07-2021 12:56:46

Dumby пишет

Консоль что-нибудь пишет?

ReferenceError: Services is not defined     data:((href, data) => { var en = Services.ww.getWindowEnumerator(null);:2:11


Dumby пишет

На вкладке Справка всё в порядке?

Может и не в порядке, не знаю.
Скиньте пожалуйста код, который у вас во вкладке справка. Или лучше код всей кнопки целиком.

Сustom Buttons » Custom Buttons » 18-07-2021 22:31:11

Dumby.
Не поправите кнопочку Reload user{Chrome, Content}?
На [firefox] v90 перестал работать Reload userContent по ПКМ.

Сustom Buttons » Custom Buttons » 18-07-2021 14:07:06

Vitaliy V. пишет

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

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

Выделить код

Код:

.tab-label-container {
    mask: none !important;
}
.tab-label-container > .tab-label {
    display: block !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., спасибо.

Сustom Buttons » Custom Buttons » 18-07-2021 03:51:39

Dumby пишет

Лучше бы сначала в  CSS-теме спросить,
может это стилем можно сделать.
[spoiler][code](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))}"`
        ]
    ]

Сustom Buttons » Custom Buttons » 16-07-2021 21:56:12

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

Сustom Buttons » Custom Buttons » 02-10-2020 23:42:32

suz191
Попробуйте вариант от Dumby, может подойдет.

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

Выделить код

Код:

/*Initialization code*/

// https://forum.mozilla-russia.org/viewtopic.php?pid=774905#p774905 .....
(this.type != "menu" && (this.type = "menu") && !this.hasAttribute("is")) || (move => {
    if (this.parentNode.nodeName == "toolbarpaletteitem") return;
    var bar = document.getElementById("main-menubar");
    var menupopup = document.createXULElement("menupopup");
    this.prepend(menupopup);
    move(bar, menupopup);
    addDestructor(() => move(menupopup, bar));
})((from, to) => Array.from(from.children).forEach(child => {
    var popup = child.querySelector(":scope > menupopup");
    popup.remove();
    child.textContent = child.renderedOnce = "";
    to.append(child);
    child.render();
    child.append(popup);
}));

Новости » Вышел Firefox 81.0 » 26-09-2020 01:40:16

Alekseypav пишет

Как его снова вернуть к одному процессу? Метод с созданием переменной MOZ_FORCE_DISABLE_E10S со значением 1 почему-то больше не срабатывает.

Я сам не проверял, но ЗДЕСЬ пишут, что MOZ_FORCE_DISABLE_E10S со значением 81.0 помогает.
81.0 - это номер версии [firefox].

Сustom Buttons » Custom Buttons » 11-08-2020 16:43:38

Duche пишет

Не работает

Сделаю последнюю попытку.
Если не получится, тогда не знаю, что ещё можно сделать.


Попробуйте вставить перед кодом часов (в инициализации) вот это:

Выделить код

Код:

self.type = "canvas";
if (!self.hasAttribute("initialized")) self.init = Function();

Далее из секции /*CODE*/ удалите this.leftclick(event); и перезапустите браузер.


P.S. По крайней мере у меня на [firefox] 78 ESR этот костыль сработал.

Сustom Buttons » Custom Buttons » 11-08-2020 00:26:27

Duche пишет

Добрый день. Посмотрите пожалуйста. Часики работают , тут все нормально но, недавно заменил вот такое, описать нет слов , лучше посмотреть.

Duche, попробуй ещё вот что.


Замени эту строку:

Выделить код

Код:

canvas.style.cssText = "min-width: diapx; min-height: diapx; max-width: diapx; max-height: diapx".replace(/dia/g, dia);

на эту

Выделить код

Код:

canvas.style.cssText = "position: fixed !important; min-width: diapx; min-height: diapx; max-width: diapx; max-height: diapx".replace(/dia/g, dia);

Сustom Buttons » Custom Buttons » 10-08-2020 16:04:11

Duche пишет

Добрый день. Посмотрите пожалуйста. Часики работают , тут все нормально но, недавно заменил вот такое, описать нет слов , лучше посмотреть.

Duche, не уверен, что поможет, но попробуйте перед вашим кодом часов (в инициализации) вставить это:

Выделить код

Код:

this.setAttribute("stop","true");

Сustom Buttons » Custom Buttons » 07-08-2020 14:01:10

Duche.

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

Выделить код

Код:

/*Initialization Code*/

this.onclick = function(e) {
  if ( e.button == 0 ) {
    e.preventDefault();
    undoCloseTab();
  }
};

Сustom Buttons » Custom Buttons » 05-08-2020 13:26:09

Dumby пишет

Ну да, я же говорю — бесполезно :).

Ладно, бог с ним.
Просто мне попадалось пару-тройку скриптов для "обезьяны", которые подменяют все ссылки на странице с youtube на invidio налету.
Вот и подумал, что можно сделать нечто подобное, но только по клику.


Мне Vitaliy V. подогнал дополнение, в котором можно настроить почти любой редирект.
Но я не любитель большого количества дополнений, и по возможности сначала пытаюсь реализовать нужный мне функционал с помощью СВ или Tampermonkey.
Раз, в этом случае, не получается, то поставлю дополнение.


Спасибо за помощь!

Сustom Buttons » Custom Buttons » 05-08-2020 03:14:23

Dumby пишет

Может попробуй какую-нибудь обезьяну ({Tamper, Grease, Violent}monkey)
под это дело подрядить. Например, чтобы href по клику подменялся, типа

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

Выделить код

Код:

((re, ret) => {
	var listener = e => {
		if (e.button > 1) return;
		var link = e.target.closest("a[href]");
		if (link && re.test(link.href)) {
			var was = link.getAttribute("href");
			link.href = "https://invidio.us/" + RegExp.rightContext;
			setTimeout(ret, 200, link, was);
		}
	}
	addEventListener("click", listener, true);
	"onauxclick" in document && addEventListener("auxclick", listener, true);
})(
	/^https:\/\/(?:www\.)?youtu(?:be\.com|\.be)\//,
	(link, href) => link.setAttribute("href", href)
);

Собственно, у меня Tampermonkey установлен. Однако скрипт не срабатывает.

Сustom Buttons » Custom Buttons » 04-08-2020 14:55:54

Dumby
Возможно ли реализовать такую штуку.

Заходя на любую страницу любого сайта получить массив ссылок.
И, если какие-то из них ссылаются на youtube.com или на youtu.be, то при клике на такие ссылки происходил редирект на invidio.us.


Например:
https://www.youtube.com/watch?v=MdGDMFuT8vU  --->  https://invidio.us/watch?v=MdGDMFuT8vU
https://youtu.be/336Z5BhM7h0  --->  https://invidio.us/336Z5BhM7h0


P.S. Желательно, чтобы код работал как на FF52 ESR, так и на FF78 ESR.

Сustom Buttons » Custom Buttons » 04-08-2020 13:58:47

Duche пишет

Добрый день. Поправьте пожалуйста кнопку "Закрыть все вкладки и перейти на домашнюю."  Вкладки закрывает а на домашнюю не переходит.

:/

Выделить код

Код:

/*CODE*/

[...gBrowser.tabs].forEach((tab)=> !tab.pinned && gBrowser.removeTab(tab)); /*закрыть все вкладки*/
  var url = "https://yandex.ru";
  openUILinkIn(url, 'current', { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() }); /*Закрытие всех вкладок приводило к открытию домашней страницы*/

Сustom Buttons » Custom Buttons » 10-07-2020 00:04:37

Dumby пишет

Вот прям при открытии, ну разве что на выходе подменить.
Выбор сессии — двойной ЛКМ по соответствующему пункту.
Код добавить в конец.

Спасибо большое!


Dumby пишет

А вообще, кнопка совершенно кривая, одноокошечная,
её нереально исправить, только переписать заново.

Если Вам не трудно, и если найдете время, то перепишите пожалуйста.

Сustom Buttons » Custom Buttons » 09-07-2020 01:19:38

Dumby.
Можно ли добавить в эту кнопку возможность восстановления выбранной сессии (из ранее сохраненных) при открытии браузера.[spoiler][code]/*Initialization Code*/

// Simple Session Manager (https://forum.mozilla-russia.org/viewtopic.php?pid=744023#p744023) ..........

// Подсказки для кнопки .....
this.tooltipText = "Simple Session Manager\n\
------------------------------\n\
Л:   Меню сессий\n\
дЛ: Сохранить сессию\n\
П:   CB меню";

// Настройка функций кликов мыши .....
this.onmousedown =e=> {

  this.onmouseup =e=> {        // левый клик
    if ( e.button ) return;
    clearTimeout(self.timer);
    self._handleClick =()=> menupopup.openPopup(this, "after_start");
  }

  if ( e.button == 0 ) {       // длинный левый клик
    self.timer = setTimeout(()=> {
    self.onmouseup = '';
      saveCurrentSession();
    }, 500);
  }

  if ( e.button == 2 ) {       // правый клик
    gShowPopup(this);
  }

}
self.onclick =e=> e.preventDefault();


var menupopup = self.append

Сustom Buttons » Custom Buttons » 03-07-2020 13:29:02

Dumby пишет

Кнопка же инициализируется в некий момент времени, к которому,
некоторые реквесты уже могут уйти немодифированными, например,
первая вкладка при открытии браузера.


Поэтому, такому коду лучше бы разместиться в более подходящем месте,
от самого́ config.js и, может, вплоть до DOMContentLoaded систем uc(f).
Но, если это не критично, то да, можешь и из кнопки попробовать.
Набросок (для CB), чтобы было от чего оттолкнуться.
[spoiler][code]((g, id) => {
    addDestructor(r => r[5] == "e" && g[id]?.destroy());
    g[id] || ({
        check(channel) {
            var ua, {host} = channel.originalURI;

            if (host == "site1.org")
                ua = "User Agent 1";
            else if (host == "site2.com")
                ua = "User Agent 2";
            //else if (...

            ua && channel.setRequestHeader("User-Agent", ua, false);
        },
        init(topics) {
            var {obs} = Services;
            this.observe = subj => subj instanceof Ci.nsIHttpChannel && this.check(subj);
            obs.addObserver(g[id] = this, topics[0], false);
            obs.addObserver(this.destroy = ()

Сustom Buttons » Custom Buttons » 01-07-2020 21:14:48

Вопрос не совсем по теме.
Возможность назначать для определенных сайтов свой UserAgent в крайних версиях [firefox] выпилили окончательно?
Теперь для этого придется использовать только дополнения или все-таки возможно как-то реализовать это с помощью СВ?

Сustom Buttons » Custom Buttons » 26-06-2020 18:49:15

Dumby пишет

Так всё то же самое

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

Выделить код

Код:

var alert = msg => Services.prompt.wrappedJSObject
	.pickPrompter({domWin: window, modalType: Ci.nsIPrompt.MODAL_TYPE_WINDOW})
	.alert(null, msg);

var confirm = msg => Services.prompt.wrappedJSObject
	.pickPrompter({domWin: window, modalType: Ci.nsIPrompt.MODAL_TYPE_WINDOW})
	.confirm(null, msg);

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

Сustom Buttons » Custom Buttons » 26-06-2020 12:47:24

Dumby пишет

Конкретно prompt в кнопке можно свой попробовать запилить, примерно как-то так

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

Выделить код

Код:

var prompt = (msg, value) => {
	var res = {value};
	var ok = Services.prompt.wrappedJSObject
		.pickPrompter({domWin: window, modalType: Ci.nsIPrompt.MODAL_TYPE_WINDOW})
		.nsIPrompt_prompt(null, msg, res, null, {});
	return ok ? res.value : null;
}

Dumby, если не сложно, набросайте такие же свои функции для alert(); и confirm();
Думаю, пригодятся в будущем.

Сustom Buttons » Custom Buttons » 26-06-2020 12:12:05

Dumby пишет

Конкретно prompt в кнопке можно свой попробовать запилить, примерно как-то так

Dumby, спасибо! Теперь всё нормально, ошибки нет.
Там ещё такая же история с confirm, но это я решил путем замены confirm на custombuttons.confirmBox.

Board footer

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