>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Сustom Buttons http://forum.mozilla-russia.org/viewforum.php?id=34 >[CB]Открывать ссылки в новой вкладке длинным кликом http://forum.mozilla-russia.org/viewtopic.php?id=60215 |
bunda1 > 06-09-2013 23:02:40 |
Открывать ссылки в новой вкладке длинным кликом (Firefox24+) Выделить код Код:// Открывать ссылки длинным кликом, от 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 || !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) }); })(); |
voqabuhe > 07-09-2013 12:42:41 |
bunda1 |
2k1dmg > 07-09-2013 13:22:34 |
voqabuhe пишет
скрытый текст заменить на |
Lex1 > 07-09-2013 13:41:24 |
Потому что не передаётся реферрер. // А ещё было бы неплохо фильтровать ссылки с протоколом javascript: |
voqabuhe > 07-09-2013 13:45:12 |
2k1dmg |
bunda1 > 07-09-2013 13:55:22 |
voqabuhe пишет
Комментарии к статье открывается не правильно потому что код берет адрес от сплывающей подсказки которая появляется у панели расширений. И похоже что эта подсказка не правильно показывает адрес. Пока не знаю как с этим справится без полной переделки кода, буду думать. 07-09-2013 13:56:29 |
voqabuhe > 07-09-2013 14:07:28 |
bunda1 пишет
Ну если это нигде больше не проявляется, и никому больше не мешает, то можешь и не заморачиваться. Я всё равно открываю там комментарии в текущей вкладке, а ошибку просто обнаружил, когда кнопку тестировал. |
Lex1 > 07-09-2013 14:13:00 |
bunda1 voqabuhe |
voqabuhe > 07-09-2013 14:24:55 |
Lex1 пишет
Не понял вопрос. |
bunda1 > 07-09-2013 14:27:40 |
Lex1 пишет
Вот спасибо, оказалось что это просто. Lex1 пишет
Ok. |
voqabuhe > 07-09-2013 14:42:48 |
bunda1, Lex1 |
bunda1 > 09-09-2013 22:35:43 |
Открывать ссылки и закладки в новой вкладке длинным кликом ( Firefox 17+ ) в том случае замените в коде: на: Выделить код Код:var lab = XULBrowserWindow.statusTextField.label.split(' '); lab = (lab.length > 1) ? lab[1] : lab[0]; Использование: создайте новую Custom Buttons кнопку и положите код в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую. Выделить код Код:// Открывать ссылки и закладки в новой вкладке длинным кликом, от 03.12.2013. ................................ (function() { const time = 500, referrer = true, bookmarks = true, background = true; related_to_current = true; function hahdleMouseEvent(e) { e.preventDefault(); e.stopPropagation(); e.type == "mouseup" && closeMenus(e.target); } var timeout, node; if (background) var type; if (bookmarks) var trg, xe, bookmark; function handleLongPress(e) { if (e.button) return; var lab = XULBrowserWindow.statusTextField.label; if (bookmarks) { trg = e.target; xe = trg instanceof XULElement; bookmark = trg._placesNode && !trg.hasAttribute("container") && xe; if (xe && !bookmark) return; if (bookmark) lab = trg._placesNode.uri; } if (!lab || lab.startsWith("javascript") || gBrowser.webProgress.isLoadingDocument) return; if (e.type == "mousedown") { timeout = setTimeout(function() { node = e.target; var ref, doc = node.ownerDocument; if (background) { type = bookmarks && bookmark && node.nodeName == "menuitem" ? "mouseup" : "click"; node.addEventListener(type, hahdleMouseEvent, true); } if (referrer && !xe && doc.location.protocol.startsWith("http")) ref = makeURI(doc.location, doc.charsetSet); gBrowser.loadOneTab(lab, { referrerURI: ref, inBackground: background, relatedToCurrent: related_to_current }); timeout = null; }, time); } else { if (timeout) timeout = clearTimeout(timeout); if (node && background) node = !setTimeout(function(node) node.removeEventListener(type, hahdleMouseEvent, true), 50, node); } } ["mouseup", "mousedown", "dragstart"] .forEach(function(type) addEventListener(type, handleLongPress, true, bookmarks ? window : gBrowser)); })(); |
villa7 > 02-12-2013 21:43:34 |
bunda1
Вот спасибо, хорошая новость. |
villa7 > 03-12-2013 18:04:27 |
bunda1 |
bunda1 > 03-12-2013 20:43:23 |
villa7 пишет
У меня вроде работает, а старая версия кода как работает: Выделить код Код:// Открывать ссылки в новой вкладке длинным кликом, от 16.10.2013. ................................ (function func() { const time = 500; // время удержания в мс const background = false; // открывать в фоновой вкладке const nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { setTimeout(function() { try { func.removeListener() } catch(e){} }, 0) var lab = XULBrowserWindow.statusTextField.label; if ( e.button || !lab || lab.startsWith("javascript") ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(function() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { 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(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
villa7 > 03-12-2013 20:53:01 |
bunda1
Может СВ 0.0.5.7pre3 не той версии. P.S. Проверил на чистой 25-ой, старый код работает, новый не хочет. |
bunda1 > 03-12-2013 21:42:34 |
villa7 Выделить код Код:// Открывать ссылки в новой вкладке длинным кликом, от 03.12.2013. ................................ (function func() { const time = 500; // время удержания в мс const background = false; // открывать в фоновой вкладке const nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { setTimeout(function() { try { func.removeListener() } catch(e){} }, 0) var lab = XULBrowserWindow.statusTextField.label; if ( e.button || !lab || lab.startsWith("javascript") || lab.slice(0,4) !== "http" ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(function() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { 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(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
villa7 > 03-12-2013 22:31:26 |
bunda1 |
bunda1 > 03-12-2013 22:36:10 |
Выделить код Код:// Открывать ссылки в новой вкладке длинным кликом, от 03.12.2013. ................................ (function func() { const time = 500; // время удержания в мс const background = false; // открывать в фоновой вкладке const nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { setTimeout(function() { try { func.removeListener() } catch(e){} }, 0) var lab = XULBrowserWindow.statusTextField.label; if ( e.button || !lab || lab.startsWith("javascript") || gBrowser.webProgress.isLoadingDocument ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(function() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { 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(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
villa7 > 03-12-2013 22:43:55 |
bunda1 |
bunda1 > 03-12-2013 22:47:16 |
Мистика однако. |
difabor > 15-12-2013 11:37:12 |
bunda1 пишет
Нет мистики |
bunda1 > 15-12-2013 16:24:29 |
difabor пишет
Пример не помешал бы! 15-12-2013 16:30:57 |
difabor > 15-12-2013 16:56:28 |
bunda1 пишет
Я не совсем понял, что подразумевается под примером. |
bunda1 > 15-12-2013 17:19:38 |
difabor пишет
Ты правильно понял насчёт примера но у меня длинный клик твой пример открывает в фоновой вкладке без проблем 15-12-2013 17:22:03 |
difabor > 15-12-2013 17:39:08 |
Значит у меня что-то не так установлено |
villa7 > 15-12-2013 17:49:15 |
bunda1 |
bunda1 > 15-12-2013 18:03:01 |
villa7 пишет
Наверно нет, код берет адрес ссылки из подсказки внизу а там при загрузке страницы адрес страницы. Разве только опять брать адрес напрямую из ссылки(сложно) или остановить загрузку при длинном клике. Если придумаю простое решение сообщу. |
bunda1 > 15-12-2013 19:34:37 |
villa7 Выделить код Код:// Открывать ссылки в новой вкладке длинным кликом, от 15.12.2013. ................................ (function func() { const time = 500; // время удержания в мс const background = false; // открывать в фоновой вкладке const nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { setTimeout(function() { 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() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { 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(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
difabor > 15-12-2013 19:44:53 |
Но если "const background = false; // открывать в фоновой вкладке" то вкладка откроется в форграунде... |
bunda1 > 15-12-2013 19:53:35 |
difabor пишет
Ну так и задумано |
villa7 > 15-12-2013 22:44:57 |
bunda1 |
thrower > 21-01-2014 04:48:00 |
bunda1, шикарная кнопка, спасибо! А не мог бы ты добавить в кнопку "(Принудительно) открывать ссылки в текущей вкладке длинным ПКМ"? |
Пандёнок > 21-01-2014 09:57:08 |
thrower пишет
Присоединяюсь! |
Ki_rrrilll > 21-01-2014 19:29:32 |
А как бы сделать чтобы пункт контекстного меню "Открыть ссылку в новой вкладке" открыл новую foreground вкладку, при том, что в about:config у меня стоит browser. tabs. loadInBackground=true и менять эту настройку я бы не хотел? Можно кликнуть по ссылке зажав Ctrl + Shift, тогда фокус переходит на новый таб, но а как бы повесить это на пункт меню? |
bunda1 > 21-01-2014 20:21:27 |
Пандёнок пишет
Выделить код Код:// Открывать ссылки длинным кликом, от 21.01.2014. ................................ (function func() { const time = 500; // время удержания в мс const background = true; // открывать в фоновой вкладке const nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { window.clearTimeout( func.timer ); setTimeout(function() { try { func.removeListener() } catch(ev) {} }, 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() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { removeEventListener('click', c, true) }; e.button == 0 ? gBrowser.loadOneTab( lab, {relatedToCurrent: nextToCurrent, inBackground: background, referrerURI: makeURI(content.location.href)} ) : gBrowser.loadURI( lab, makeURI(content.location.href) ); }, time ); } else clearTimeout( func.timer ); }; ["mouseup", "mousedown", "dragstart"] .forEach(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })() 21-01-2014 20:35:44 Ki_rrrilll пишет
Выделить код Код:(function () { var openlinkintab = document.getElementById("context-openlinkintab"); openlinkintab.setAttribute("oncommand", "event.preventDefault(); this.run();"); openlinkintab.run = function() { gBrowser.loadOneTab( gContextMenu.getLinkURL(), {relatedToCurrent: true, inBackground: false, referrerURI: makeURI(content.location.href)} ) }; addDestructor(function() { openlinkintab.setAttribute("oncommand", "gContextMenu.openLinkInTab();"); }); })(); |
Ki_rrrilll > 21-01-2014 23:13:37 |
Спасибо bunda1 |
thrower > 22-01-2014 00:22:55 |
bunda1, работает! Только появился нюанс... Длинный ПКМ стал работать как надо. Принудительно загружает все ссылки в текущей вкладке. Можно это как-нибудь исправить? |
difabor > 22-01-2014 02:34:04 |
thrower пишет
Я Вам могу посоветовать простой воркэраунд: |
thrower > 22-01-2014 03:59:46 |
difabor
Тогда будет открываться нов. вкладка в фоне.
Независимо от сайта. Эта кнопка как раз и изменяет (плюет на) то, что "сайтом задумано"! |
difabor > 22-01-2014 04:09:06 |
thrower пишет
Так так и задумано, чтоб новая вкладка открывалась в фоне. |
thrower > 22-01-2014 04:28:43 |
difabor
Действительно. |
difabor > 22-01-2014 04:44:11 |
thrower пишет
Пожалуйста |
bunda1 > 22-01-2014 22:37:00 |
thrower пишет
У меня ЛКМ работает как надо в не зависимости от const background.... Может у тебя конфликт с другим расширением и скриптом |
oleg.sgh > 27-04-2015 07:56:19 |
Использую код №12. |
ifln > 03-05-2015 17:02:36 |
Использую "Открывать ссылки в новой вкладке длинным кликом, от 19.12.2013". |
villa7 > 03-05-2015 17:15:35 |
ifln |
ifln > 03-05-2015 17:26:35 |
villa7 |
bunda1 > 04-05-2015 23:37:36 |
ifln пишет
А вот и нет, Открывать ссылки в новой вкладке длинным кликом вообще на СКМ не влияет. |
ifln > 05-05-2015 07:43:22 |
bunda1 пишет
Правильно. Влияние обратное. Настройка браузера browser.tabs.insertRelatedAfterCurrent;false не позволяет открыть вкладку вслед за текущей по longclick. Т.е. сonst nextToCurrent = true не работает. |
bunda1 > 05-05-2015 18:32:59 |
ifln Выделить код Код:// Открывать ссылки в новой вкладке длинным кликом, от 05.05.2015. ................................ (function func() { const time = 500; // время удержания в мс const background = true; // открывать в фоновой вкладке function handleLongPress(e) { window.clearTimeout( func.timer ); setTimeout(function() { try { func.removeListener() } catch(ev) {} }, 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() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { removeEventListener('click', c, true) }; var x = gBrowser.mCurrentTab._tPos +1; gBrowser.moveTabTo( gBrowser.loadOneTab(lab, {inBackground: background, referrerURI: makeURI(content.location.href)}), x); }, time ); } else clearTimeout( func.timer ); }; ["mouseup", "mousedown", "dragstart"] .forEach(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
ifln > 05-05-2015 20:30:06 |
bunda1 |
Kiril__777 > 29-08-2015 04:31:02 |
То что кнопка дает возможность "открывать ссылки в новой вкладке длинным кликом" это понятно. Но вот кнопка дает еще один эффект "открытия ссылки в фоне при ее выделении". Можно это как-то отключить? Спасибо |
bunda1 > 29-08-2015 13:32:57 |
Kiril__777 пишет
Я такой эффект не наблюдаю и по коду он и не должен быть. Как ты выделяешь ссылки? |
Kiril__777 > 29-08-2015 14:45:49 |
bunda1 есть еще вот такой скрипт для нормального выделения ссылок как в опере скрытый текст // ==UserScript== // @name Выделение текста ссылки // @include * // @exclude http://*.wordstat.yandex.* // @grant GM_getValue // @grant GM_setValue // ==/UserScript== function OPLLS() { |
bunda1 > 29-08-2015 15:03:57 |
А что делает этот скрипт? |
oleg.sgh > 29-08-2015 17:04:04 |
bunda1 пишет
Позволяет выделять часть ссылки |
jars > 29-08-2015 17:38:33 |
oleg.sgh пишет
OMG! ну не надо, НЕ НАДО опять про это. Ну тотальный же IIuz#$$%%z . Оперу загнобили этими своими тупыми упрёками насчёт "я случайно выделил ссылку(одну букву) и она не открывается/открывается не там где ожидаю, сижу жду. я низаметил..." Ну неужто так неимоверно сложно заметить что делаешь в бравзере? Уже и мыши с частотами лазера для опр.позиции запредельными, и визуальные эффеты и... а глупые/ленивые юзеры все так же продолжают настаивать на своей глупости/лени. Это не оскорбление, правда не может быть оскорблением, хотя "сегодня" как знать... |
oleg.sgh > 29-08-2015 17:45:47 |
jars Из комента не понял ничего...и ладно. Я вообще только пояснил...и мыша самая что ни на есть обыкновенная. |
jars > 29-08-2015 17:48:57 |
скрытый текст bunda1 Лучше забацай этот скрипт под [CB] ибо оно если запихнуть в Init кнопки - не дизаблит mouseup, ссылка выделяется и потом идет ошибка и mouseup всё равно срабатывает и переходит по ссылке. т.е. выделение отрабатывает как нужно и если убрать мыша вниз/вверх от той буквы где закончил выделение, то получаетсz mouseup срабатывает на "пустом месте" и никуда не идём. т.е. надобно убрать мыша со ссылки что не есть гуут. Это пожелание, не просьба даже. не могу я ни о чём просить. Но ежели вдруг... ты можешь , мы знаем. 29-08-2015 17:57:23 oleg.sgh да прост. я на Опере давно(был) и часто читал подобные "упрёки", чаще чем хотелось бы. И вот мне кокраз это напомнило... Хотя это скорее нужно адресовать Kiril__777-у. Поспешил, бывает |
Kiril__777 > 19-09-2015 17:11:12 |
bunda1 |
bunda1 > 19-09-2015 20:34:50 |
Kiril__777 пишет
Я про такой скрипт не знаю |
thrower > 02-02-2016 08:10:23 |
Подскажите, что изменить в кнопке, чтобы она работала в PaleMoon? |
thrower > 05-02-2016 19:55:42 |
thrower пишет
Ну тогда подскажите алгоритм выявления проблемного места в коде кнопки. ) Непривычно уже без этой кнопки как-то. С остальными кнопками проблем нет. А эта, одна из самых используемых, не работает. |
bunda1 > 06-02-2016 00:43:30 |
thrower пишет
Кажется в коде не работает XULBrowserWindow.overLink 06-02-2016 01:10:41 Выделить код Код:// Открывать ссылки в новой вкладке длинным кликом, от 19.12.2013. ................................ (function func() { const time = 500; // время удержания в мс const background = false; // открывать в фоновой вкладке const nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { window.clearTimeout( func.timer ); setTimeout(function() { try { func.removeListener() } catch(ev) {} }, 0); var lab = document.getElementById("status4evar-status-text").value; if ( e.button || !lab || lab.startsWith("javascript") ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(function() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { 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(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
thrower > 06-02-2016 11:29:47 |
bunda1, к сожалению, без изменений. Пробовал на PaleMoon 25 и 26. |
bunda1 > 06-02-2016 11:33:05 |
thrower пишет
Странно, у меня на чистом PaleMoon 26 работает Проверь на чистом профиле. |
thrower > 06-02-2016 20:58:27 |
bunda1 пишет
Понял, в чем дело. Дело во вшитом расширении PM Statusbar. У меня изменена настройка Show links in Statusbar на Popup (как в Файрфоксе). А изменения кода кнопки (getElementById) привязаны именно к этой дефолтной настройке. И поэтому при любом изменении этого Show links in Statusbar кнопка перестает работать. Немного неудобно, но зато работает! bunda1, спасибо за помощь. |
bunda1 > 06-02-2016 21:33:41 |
thrower пишет
Где можно установить PM Statusbar? |
thrower > 06-02-2016 22:00:47 |
bunda1, |
bunda1 > 06-02-2016 22:29:02 |
thrower пишет
Выделить код Код:// Открывать ссылки в новой вкладке длинным кликом, от 19.12.2013. ................................ (function func() { const time = 500; // время удержания в мс const background = false; // открывать в фоновой вкладке const nextToCurrent = true; // открывать рядом с текущей вкладкой function handleLongPress(e) { window.clearTimeout( func.timer ); setTimeout(function() { try { func.removeListener() } catch(ev) {} }, 0); var lab = XULBrowserWindow.statusTextField.value; if ( e.button || !lab || lab.startsWith("javascript") ) return; if ( e.type == "mousedown" && !e.target.className.startsWith("ui-slider-handle") ) { func.timer = setTimeout(function() { function c(e) { e.preventDefault(); e.stopPropagation() }; addEventListener('click', c, true); func.removeListener = function() { 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(function(type) { addEventListener(type, handleLongPress, true, gBrowser) }); })(); |
thrower > 06-02-2016 22:47:26 |
bunda1, спасибо, то что надо! |
oleg.sgh > 29-02-2016 09:27:33 |
Не могу сообразить как здесь сделать что бы открывалось в активных вкладках. |
villa7 > 29-02-2016 10:46:31 |
oleg.sgh |
oleg.sgh > 29-02-2016 10:53:02 |
villa7 Странно, но сейчас заработало. Значит сам косячил Спасибо. |
cahesigwias > 13-08-2016 22:37:41 |
Очень полезно расширение, но не работает с включенной мультипроцессностью, это можно исправить? |
bunda1 > 14-08-2016 22:22:37 |
cahesigwias пишет
Вот один хороший человек исправил: Выделить код Код:(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 > 17-08-2016 22:39:33 |
bunda1 пишет
Большое спасибо, заработало. Есть два нюанса, может возможно их исправить? |
oleg.sgh > 23-12-2016 11:48:09 |
В предыдущих версиях , не срабатывал клик при выделении ссылки с помощью скрипта Select like opera. Можно их опять подружить? |
shadow_user > 09-01-2017 10:28:51 |
Кнопка нормальным левым кликом открывает сайт в текущей вкладке.
Просьба поправить ее, чтобы нормальным левым кликом открывала сайт в новой фоновой или новой активной вкладке (с возможностью исправить код для незнаек, как я). |
bunda1 > 09-01-2017 12:37:07 |
oleg.sgh пишет
А если так - длинным ПКМ временно превратить ссылку в текст. Выделить код Код:// Открывать ссылки длинным кликом, от 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) }); })(); |
oleg.sgh > 09-01-2017 13:29:20 |
bunda1
Все равно срабатывает при выделении с произвольного места (со скриптом). Ссылку с начала и с конца можно выделить без скрипта и с текущей версией кнопки. программа, например Если бы это было разовое действие, то да. По той же программе я ищу фильмы и передачи для посмотреть. |
bunda1 > 09-01-2017 13:54:32 |
oleg.sgh пишет
Ну так мой новый код тоже даёт возможность без скрипта выделить и копировать часть ссылки. |
oleg.sgh > 09-01-2017 14:03:58 |
bunda1 |
bunda1 > 09-01-2017 14:13:47 |
oleg.sgh пишет
Попробуй еще Сегодня 12:37:07, я там кое что исправил. |
oleg.sgh > 09-01-2017 14:39:56 |
bunda1 скрытый текст Программа |
bunda1 > 09-01-2017 15:07:26 |
oleg.sgh пишет
Нет, текст надо выделяеть левой кн. мыши. |
oleg.sgh > 09-01-2017 15:09:48 |
bunda1 |
villa7 > 09-01-2017 15:15:59 |
oleg.sgh |
bunda1 > 09-01-2017 15:17:30 |
oleg.sgh пишет
Ну тогда не знаю, у меня вроде работает на FF50 без e10. |
oleg.sgh > 09-01-2017 17:28:42 |
villa7, bunda1 |
thrower > 12-05-2017 21:16:42 |
bunda1 |
Innulia > 16-03-2018 16:22:00 |
bunda1 |
drage2 > 16-03-2018 17:46:31 |
А просто открыть закладки и журнал в новой вкладке? Ссылки не актуально. И принцип addtab не очень , если бы loadOnNewTab... |
unter_officer > 20-05-2018 12:56:23 |
Исправьте пожалуйста кнопку под 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) }); })(); |
SanchiZ > 22-07-2018 14:04:21 |
Можно повесить на ПКМ? |
bunda1 > 23-07-2018 08:37:54 |
SanchiZ пишет
Выделить код Код:// Открывать ссылки длинным кликом, от 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) }); })(); |
SanchiZ > 23-07-2018 15:32:13 |
bunda1 |
Alex_one > 28-07-2018 11:42:44 |
unter_officer пишет
Поддержу. Очень этой кнопки не хватает. |
unter_officer > 29-07-2018 11:25:28 |
Alex_one |
Alex_one > 29-07-2018 18:17:34 |
unter_officer |