Очень полезно расширение, но не работает с включенной мультипроцессностью, это можно исправить?
Отсутствует
Очень полезно расширение, но не работает с включенной мультипроцессностью, это можно исправить?
Вот один хороший человек исправил:
(code => { var delay = 500; // время удержания в мс var inBackground = true; // открывать в фоновой вкладке var relatedToCurrent = true; // открывать рядом с 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, { relatedToCurrent, inBackground: ctrl != bg, //referrerURI: makeURI(ref) }); } mm.addMessageListener(msgResponse, handleLongPress); addDestructor(() => { mm.removeDelayedFrameScript(url); mm.broadcastAsyncMessage(msgDestroy); mm.removeMessageListener(msgResponse, handleLongPress); }); })(`({ init() { addEventListener("mousedown", this, false); addMessageListener("%MD%", this); }, receiveMessage() { removeEventListener("mousedown", this, false); removeMessageListener("%MD%", this); }, handleEvent(e) { if (e.type == "mousedown") { if (e.button || e.shiftKey || e.altKey || e.detail != 1) return; var a = e.originalTarget.closest("a[href]"); if (!a || a.href.startsWith("javascript:")) return; this.ctrl = e.ctrlKey; this.initLongPress(a); } else { if (e.type == "click" && !this.link) e.preventDefault(); this.destroyLongPress(); } }, get timer() { delete this.timer; return this.timer = Components.classes["@mozilla.org/timer;1"] .createInstance(Components.interfaces.nsITimer); }, notify() { sendSyncMessage("%MR%", [this.link.href, this.link.ownerDocument.URL, this.ctrl]); this.link = null; if (!%BG%) this.destroyLongPress(); }, initLongPress(a) { addEventListener("click", this, true); addEventListener("dragstart", this, false); this.timer.initWithCallback(this, %DL%, this.timer.TYPE_ONE_SHOT); this.link = a; }, destroyLongPress() { removeEventListener("click", this, true); removeEventListener("dragstart", this, false); this.link && this.timer.cancel(); this.link = null; } }).init();`);
Отсутствует
cahesigwias пишетОчень полезно расширение, но не работает с включенной мультипроцессностью, это можно исправить?
Вот один хороший человек исправил:
Большое спасибо, заработало. Есть два нюанса, может возможно их исправить?
1. Функция начинает работать только если хоть раз нажать на саму кнопку после запуска фаерфокса, может нужно что то прописать в код инициализации или я не так создаю кнопку? на панель добавляю.
2. Если переключить inBackground = true в false (именно так и и задумывал работу) то вкладки начинают открываться в конце списка treestyletab, а не под текущей вкладкой, по сути relatedToCurrent = true начинает игнорироваться, хотя если открывать вкладку в бекграудне, то все работает как нужно.
Отсутствует
В предыдущих версиях , не срабатывал клик при выделении ссылки с помощью скрипта Select like opera. Можно их опять подружить?
То есть, если выделяется часть ссылки то клик не срабатывает. Как пример, эти
Отредактировано oleg.sgh (23-12-2016 11:54:10)
Отсутствует
Кнопка нормальным левым кликом открывает сайт в текущей вкладке.
loadURI("https://forum.mozilla-russia.org/viewforum.php?id=34/");
Просьба поправить ее, чтобы нормальным левым кликом открывала сайт в новой фоновой или новой активной вкладке (с возможностью исправить код для незнаек, как я).
Ad
Решено. Нашел готовую кнопку, открывает в новой активной вкладке https://forum.mozilla-russia.org/viewto … 65#p684365
Отредактировано shadow_user (09-01-2017 12:43:19)
Отсутствует
В предыдущих версиях , не срабатывал клик при выделении ссылки с помощью скрипта
А если так - длинным ПКМ временно превратить ссылку в текст.
// Открывать ссылки длинным кликом, от 09.01.2017. .................... (function func() { var time = 500; // время удержания в мс var background = true; // открывать в фоновой вкладке var nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { window.clearTimeout(func.timer); setTimeout(()=> { try { func.removeListener() } catch(e) {} }, 0); var lab = XULBrowserWindow.overLink; if ( e.button == 1 || !lab || lab.startsWith("javascript") ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(()=> { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener =()=> { removeEventListener('click', c, true) }; if ( e.button == 0 ) gBrowser.loadOneTab(lab, {relatedToCurrent: nextToCurrent, inBackground: background, referrerURI: makeURI(content.location.href)}); else { var targ = e.target; targ.removeAttribute('href'); XULBrowserWindow.overLink = ''; var lastStyle = getComputedStyle(targ); targ.style.cssText = "-moz-appearance: none; color: black !important; text-decoration: none !important;"; setTimeout(()=> { targ.setAttribute('href', lab); targ.style.cssText = lastStyle; }, 5000); } }, time); } else clearTimeout(func.timer); }; ["mouseup", "mousedown", "dragstart"] .forEach(type=> { addEventListener(type, handleLongPress, true, gBrowser) }); })();
Отсутствует
bunda1
А если так - длинным ПКМ превратить ссылку в текст.
Все равно срабатывает при выделении с произвольного места (со скриптом). Ссылку с начала и с конца можно выделить без скрипта и с текущей версией кнопки.
Смысл был в следующим:
В паре со скриптом можно было выделить нужную часть ссылки (выделенное автоматом шло в поиск), открыть длинным кликом в новой активной вкладке, что бы открыть описание и открыть эту же выделенную ссылку длинным кликом, если найденное в поиске непонятно.
Отредактировано oleg.sgh (09-01-2017 13:33:30)
Отсутствует
можно было выделить нужную часть ссылки
Ну так мой новый код тоже даёт возможность без скрипта выделить и копировать часть ссылки.
Отсутствует
bunda1
У меня не выделяет и открывает кликом, хотя ссылка меняет цвет.
СВ, текущая версия на АМО.
Попробуй еще Сегодня 12:37:07, я там кое что исправил.
Отсутствует
bunda1
Я так понял ссылка появляется вновь через некоторое времени...но текст не выделяется правой кн. мыши. На левой у меня жесты...если что.
Вдобавок, при отпускании ЛКМ, происходит переход по ссылке
Отсутствует
oleg.sgh
Выделяет по ЛКМ нормально, значит что-то у тебя, попробуй на чистом, сам убедишься, а переход по ссылке при отпускании ЛКМ происходит если текст снова превратился в ссылку, что логично. Просто увеличь время, или быстрее выделяй.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
bunda1
Упс, перепутал в тексте
Не выделяется левой, жесты на правой.
Ну тогда не знаю, у меня вроде работает на FF50 без e10.
Отсутствует
villa7, bunda1
Да, на чистом работает. Найти по быстрому с чем конфликтует не смог. Появляется без всякой закономерности при сборке профиля.
Дело еще в другом, ссылки прошедших передач не подсвечиваются и не видно когда сработает кнопка.
К тому же, лишний клик сводит на нет удобность кнопки.
Отсутствует
Исправьте пожалуйста кнопку под 60.0.1 ESR
// Открывать ссылки длинным кликом (function func() { var time = 500; // время удержания в мс var background = false; // открывать в фоновой вкладке var nextToCurrent = false; // открывать рядом с текущей вкладкой function handleLongPress(e) { window.clearTimeout(func.timer); setTimeout(()=> { try { func.removeListener() } catch(e) {} }, 0); var lab = XULBrowserWindow.overLink; if ( e.button || !lab || lab.startsWith("javascript") ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(()=> { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener =()=> { removeEventListener('click', c, true) }; gBrowser.loadOneTab(lab, {relatedToCurrent: nextToCurrent, inBackground: background, referrerURI: makeURI(content.location.href)}); }, time); } else clearTimeout(func.timer); }; ["mouseup", "mousedown", "dragstart"] .forEach(type=> { addEventListener(type, handleLongPress, true, gBrowser) }); })();
«The Truth Is Out There»
Отсутствует
Можно повесить на ПКМ?
// Открывать ссылки длинным кликом, от 20.06.2016. .................... (function func() { var time = 500; // время удержания в мс var background = true; // открывать в фоновой вкладке var nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { window.clearTimeout(func.timer); setTimeout(()=> { try { func.removeListener() } catch(e) {} }, 0); var lab = XULBrowserWindow.overLink; if ( e.button != 2 || !lab || !lab.startsWith("http") || lab.startsWith("javascript") ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(()=> { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener =()=> { removeEventListener('click', c, true) }; setTimeout(()=> document.getElementById("contentAreaContextMenu").hidePopup(), 500); gBrowser.loadOneTab(lab, {relatedToCurrent: nextToCurrent, inBackground: background, referrerURI: makeURI(content.location.href)}); }, time); } else clearTimeout(func.timer); }; ["mouseup", "mousedown", "dragstart"] .forEach(type=> { addEventListener(type, handleLongPress, true, gBrowser) }); })();
Отсутствует
Исправьте пожалуйста кнопку
Поддержу. Очень этой кнопки не хватает.
Сидел до последнего на 54 версии, но пришлось установить 61.0.1
Или уже всё, не будет обновления?
Отсутствует
Alex_one
Попробуйте этот вариант: https://forum.mozilla-russia.org/viewto … 22#p720922
«The Truth Is Out There»
Отсутствует