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) }); })();
Отсутствует
bunda1
Ура, все работает как надо. Огромное спасибо!
Для меня это большое удобство. Привык в Опере так "раскидывать" вновь открываемые вкладки, что посмотреть сразу, что оставить на потом.
Отредактировано ifln (05-05-2015 20:31:28)
Отсутствует
То что кнопка дает возможность "открывать ссылки в новой вкладке длинным кликом" это понятно. Но вот кнопка дает еще один эффект "открытия ссылки в фоне при ее выделении". Можно это как-то отключить? Спасибо
Отсутствует
Но вот кнопка дает еще один эффект "открытия ссылки в фоне при ее выделении"
Я такой эффект не наблюдаю и по коду он и не должен быть. Как ты выделяешь ссылки?
Отсутствует
bunda1 есть еще вот такой скрипт для нормального выделения ссылок как в опере
function OPLLS() {
this.init.apply(this, arguments);
}
OPLLS.prototype = {
handleEvent: function (e) {
switch (e.type) {
case 'mouseup':
if (!getSelection() .toString()) break;
console.log('mouseup');
var t = e.target;
while (t.nodeName != 'A' && t.nodeName != 'HTML') t = t.parentNode;
if (!t.href) {
console.log('uninit');
this.uninit();
}
break;
case 'click':
if (!getSelection() .toString()) {
console.log('clicked and uninit');
this.uninit();
break;
}
e.preventDefault();
e.stopPropagation();
console.log('selected and uninit');
this.uninit();
}
},
init: function (e) {
var t = e.target;
if (t.nodeName == 'IMG') return ;
while (t.nodeName != 'A' && t.nodeName != 'HTML') t = t.parentNode;
if (!t.href) return ;
t.draggable = false;
console.log('OK');
document.addEventListener('mouseup', this, true);
document.addEventListener('click', this, true);
},
uninit: function () {
document.removeEventListener('mouseup', this, true);
document.removeEventListener('click', this, true);
}
}
document.addEventListener('mousedown', function (e) {
if (e.button != 0 || e.ctrlKey || e.altKey || e.shiftKey) return ;
new OPLLS(e);
}, false);
Отсутствует
А что делает этот скрипт?
Позволяет выделять часть ссылки
если...замешкаться с началом выделения, на время задержки в кнопке, то откроется ссылка.
Отсутствует
если...замешкаться с началом выделения, на время задержки в кнопке, то откроется ссылка.
OMG! ну не надо, НЕ НАДО опять про это. Ну тотальный же IIuz#$$%%z . Оперу загнобили этими своими тупыми упрёками насчёт "я случайно выделил ссылку(одну букву) и она не открывается/открывается не там где ожидаю, сижу жду. я низаметил..." Ну неужто так неимоверно сложно заметить что делаешь в бравзере? Уже и мыши с частотами лазера для опр.позиции запредельными, и визуальные эффеты и... а глупые/ленивые юзеры все так же продолжают настаивать на своей глупости/лени. Это не оскорбление, правда не может быть оскорблением, хотя "сегодня" как знать...
Этоже получилась абалденная "фишка", а её опять хотят запихнуть в "баги". Против!
Отсутствует
Отредактировано jars (29-08-2015 17:59:48)
Отсутствует
bunda1
Извините, вы можете ответить на мой вопрос?
Отсутствует
Подскажите, что изменить в кнопке, чтобы она работала в PaleMoon?
Ну тогда подскажите алгоритм выявления проблемного места в коде кнопки. )
Где/в чем посмотреть, какой код не срабатывает?
Непривычно уже без этой кнопки как-то. С остальными кнопками проблем нет. А эта, одна из самых используемых, не работает.
Отредактировано thrower (05-02-2016 19:59:22)
Отсутствует
Ну тогда подскажите алгоритм выявления проблемного места в коде кнопки. )
Где/в чем посмотреть, какой код не срабатывает?
Кажется в коде не работает XULBrowserWindow.overLink
Добавлено 06-02-2016 01:10:41
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 = 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) }); })();
Отредактировано bunda1 (06-02-2016 01:10:41)
Отсутствует
Странно, у меня на чистом PaleMoon 26 работает Проверь на чистом профиле.
Понял, в чем дело. Дело во вшитом расширении PM Statusbar.
У меня изменена настройка Show links in Statusbar на Popup (как в Файрфоксе). А изменения кода кнопки (getElementById) привязаны именно к этой дефолтной настройке. И поэтому при любом изменении этого Show links in Statusbar кнопка перестает работать.
Немного неудобно, но зато работает!
bunda1, спасибо за помощь.
Отредактировано thrower (06-02-2016 21:02:50)
Отсутствует
У меня изменена настройка Show links in Statusbar на Popup (как в Файрфоксе)
// Открывать ссылки в новой вкладке длинным кликом, от 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) }); })();
Отсутствует
villa7
Пробовал менять но без результата. Попробую еще в новом профиле...может конфликт с другими кнопами.
Странно, но сейчас заработало. Значит сам косячил Спасибо.
Отредактировано oleg.sgh (29-02-2016 11:12:06)
Отсутствует