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

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

С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.

Сustom Buttons » Custom Buttons » 26-06-2020 01:37:18

Есть код взятый отсюда.
Сразу оговорюсь, код правил под себя, т.е. выкинул из него всё то, что мне не нужно.
Код прекрасно работает на крайней версии [firefox].


[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 ) {       // правый кл

Сustom Buttons » Custom Buttons » 24-06-2020 15:11:42

Vitaliy V. пишет

А ну да для [windows] юзеров только одна винда и существует...

Ну, извини. Вот такие мы, виндузятники. Dv0vqt-XWo-AAOn-Qf.png

Сustom Buttons » Custom Buttons » 24-06-2020 14:27:52

Vitaliy V. пишет

Nightly 79 - глюк как был так и есть

Поставил 78.0esr-candidates build2 (32-bit).
Всё работает как надо, глюка нет.


P.S. Посмотрим, что будет в релизной версии.

Сustom Buttons » Custom Buttons » 24-06-2020 03:01:29

Есть такой код:[spoiler][code]/*Initialization Code*/

// Открывать ссылки длинным кликом ..........
(code => {
    var delay = 500;               // время удержания в мс
    var inBackground = false;      // открывать в фоновой вкладке
    var relatedToCurrent = false;  // открывать рядом с related вкладкой

    var p = "CB" + _id.slice(20) + ":LongPressHandler:";
    var msgDestroy = p + "Destroy", msgResponse = p + "Response";
    code = code.replace(/%MD%/g, msgDestroy).replace("%MR%", msgResponse)
        .replace("%DL%", delay).replace("%BG%", inBackground);

    var url = "data:," + encodeURIComponent(code);
    var mm = window.getGroupMessageManager("browsers");
    mm.loadFrameScript(url, true);

    function handleLongPress(msg) {
        var [link, ref, ctrl] = msg.data;
        var bg = inBackground != null ? inBackground
            : Services.prefs.getBoolPref("browser.tabs.loadInBackground");
        gBrowser.loadOneTab(link, { triggeringPrincipal: Services.scriptSecurit

Сustom Buttons » Custom Buttons » 23-06-2020 15:46:35

Andrey_Krropotkin, большое спасибо! Всё работает.

Сustom Buttons » Custom Buttons » 23-06-2020 14:46:23

Есть вопросик.
Например, имеем такой код:

Выделить код

Код:

var selectionTxt = document.commandDispatcher.focusedWindow.getSelection();
var url = 'https://translate.google.com/#view=home&op=translate&sl=auto&tl=ru&text=';
var txtUrl = (url + encodeURIComponent(selectionTxt));
gBrowser.selectedTab = gBrowser.addTab(txtUrl, { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() });

В однопроцессорном режиме работает нормально - открывается новая вкладка translate.google.com, вставляется текст и происходит перевод текста.
В многопроцессорном режиме - открывается новая вкладка translate.google.com, а вот текст не вставляется. Консоль при этом молчит.


Как сделать, чтобы работало в многопроцессорном режиме?

Сustom Buttons » Custom Buttons » 23-06-2020 02:58:25

Dumby пишет

В Инициализацию

Dumby, огромное спасибо!

Board footer

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