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); }));
Как его снова вернуть к одному процессу? Метод с созданием переменной MOZ_FORCE_DISABLE_E10S со значением 1 почему-то больше не срабатывает.
Я сам не проверял, но ЗДЕСЬ пишут, что MOZ_FORCE_DISABLE_E10S со значением 81.0 помогает.
81.0 - это номер версии [firefox].
Не работает
Сделаю последнюю попытку.
Если не получится, тогда не знаю, что ещё можно сделать.
Попробуйте вставить перед кодом часов (в инициализации) вот это:
self.type = "canvas"; if (!self.hasAttribute("initialized")) self.init = Function();
Далее из секции /*CODE*/ удалите this.leftclick(event); и перезапустите браузер.
P.S. По крайней мере у меня на [firefox] 78 ESR этот костыль сработал.
Добрый день. Посмотрите пожалуйста. Часики работают , тут все нормально но, недавно заменил вот такое, описать нет слов , лучше посмотреть.
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);
Добрый день. Посмотрите пожалуйста. Часики работают , тут все нормально но, недавно заменил вот такое, описать нет слов , лучше посмотреть.
Duche, не уверен, что поможет, но попробуйте перед вашим кодом часов (в инициализации) вставить это:
Duche.
/*Initialization Code*/ this.onclick = function(e) { if ( e.button == 0 ) { e.preventDefault(); undoCloseTab(); } };
DEL
Ну да, я же говорю — бесполезно :).
Ладно, бог с ним.
Просто мне попадалось пару-тройку скриптов для "обезьяны", которые подменяют все ссылки на странице с youtube на invidio налету.
Вот и подумал, что можно сделать нечто подобное, но только по клику.
Мне Vitaliy V. подогнал дополнение, в котором можно настроить почти любой редирект.
Но я не любитель большого количества дополнений, и по возможности сначала пытаюсь реализовать нужный мне функционал с помощью СВ или Tampermonkey.
Раз, в этом случае, не получается, то поставлю дополнение.
Спасибо за помощь!
Может попробуй какую-нибудь обезьяну ({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 установлен. Однако скрипт не срабатывает.
…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.
Добрый день. Поправьте пожалуйста кнопку "Закрыть все вкладки и перейти на домашнюю." Вкладки закрывает а на домашнюю не переходит.
:/
/*CODE*/ [...gBrowser.tabs].forEach((tab)=> !tab.pinned && gBrowser.removeTab(tab)); /*закрыть все вкладки*/ var url = "https://yandex.ru"; openUILinkIn(url, 'current', { triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal() }); /*Закрытие всех вкладок приводило к открытию домашней страницы*/
Вот прям при открытии, ну разве что на выходе подменить.
Выбор сессии — двойной ЛКМ по соответствующему пункту.
Код добавить в конец.
Спасибо большое!
А вообще, кнопка совершенно кривая, одноокошечная,
её нереально исправить, только переписать заново.
Если Вам не трудно, и если найдете время, то перепишите пожалуйста.
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
…Кнопка же инициализируется в некий момент времени, к которому,
некоторые реквесты уже могут уйти немодифированными, например,
первая вкладка при открытии браузера.Поэтому, такому коду лучше бы разместиться в более подходящем месте,
от самого́ 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 = ()
Вопрос не совсем по теме.
Возможность назначать для определенных сайтов свой UserAgent в крайних версиях [firefox] выпилили окончательно?
Теперь для этого придется использовать только дополнения или все-таки возможно как-то реализовать это с помощью СВ?
Так всё то же самое
скрытый текстВыделить кодКод:
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, спасибо большое!
Конкретно 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();
Думаю, пригодятся в будущем.
Конкретно prompt в кнопке можно свой попробовать запилить, примерно как-то так
Dumby, спасибо! Теперь всё нормально, ошибки нет.
Там ещё такая же история с confirm, но это я решил путем замены confirm на custombuttons.confirmBox.
Есть код взятый отсюда.
Сразу оговорюсь, код правил под себя, т.е. выкинул из него всё то, что мне не нужно.
Код прекрасно работает на крайней версии [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 ) { // правый кл
…А ну да для [windows] юзеров только одна винда и существует...
Ну, извини. Вот такие мы, виндузятники.
Nightly 79 - глюк как был так и есть
Поставил 78.0esr-candidates build2 (32-bit).
Всё работает как надо, глюка нет.
P.S. Посмотрим, что будет в релизной версии.
Есть такой код:[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
Andrey_Krropotkin, большое спасибо! Всё работает.
Есть вопросик.
Например, имеем такой код:
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, а вот текст не вставляется. Консоль при этом молчит.
Как сделать, чтобы работало в многопроцессорном режиме?
В Инициализацию
Dumby, огромное спасибо!