Тема закрыта
Страницы: 1
Собственно, вопроса два, но смысл один.
Как с помощью ЛКМ открывать все ссылки только в текущей вкладке?
Или как полностью запретить самовольное открытие новых вкладок?
Как настроить работу левой кнопки мыши только для открытия ссылки в текущей вкладке, если быть совсем точным.
Дальше эмоции - можно не читать, просто накипело.
Для меня неприемлемо самовольное открытие новых вкладок. Не понимаю, кто и зачем это сделал и как это вообще все терпят.
Если мне нужна текущая страница, я нажимаю на колесико, но если не нужна, а там этот ненавистный тэг, то способы открыть в этой же вкладке одним нажатием на что-либо отсутствуют.
Ощущение будто браузер выходит из-под контроля. При этом открыть в другой вкладке и даже окне можно несколькими способами, а в этом же с гарантией - только перетаскиванием.
Я бы просто наказывал за тэг target=_blank. Просто вредительство какое-то. Я хочу сам контролировать свой браузер.
Вкладки множатся, браузер бухнет, комп тормозит, время уходит. Это не браузинг, а черти что.
Отсутствует
Lash пишет: Я хочу сам контролировать свой браузер.
кто мешает? изучай матчасть,изменяй код - всё открыто и доступно.
напиши свой www стандарт и продвинь его.
а решение находится поиском.да.
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Есть вот такая вещь. Заменяет blank на self. Работает в 95% случаев, остальные 5% - скриптовые ссылки.
// ==UserScript== // @name target blank to target self // @author Richard Pratt // @version 1.02 // @include * // @namespace * // @description changes a and base target="_blank" to target="_self" // @grant none // Based on earlier script by sameagain // ==/UserScript== var a=document.getElementsByTagName('a'), base=document.getElementsByTagName('base'); for (i=0;i<base.length;i++) if (base[i].getAttribute('target')=='_blank') base[i].setAttribute('target','_self'); for (i=0;i<a.length;i++) if (a[i].getAttribute('target')=='_blank') a[i].setAttribute('target','_self');
// ==UserScript== // @name Open links in current tab // @author wOxxOm // @description Open links in current tab regardless of _target or site's preferences. Ctrl-click: background tab, Ctrl-Shift-click: foreground tab, Shift-click: new window, Alt-click: force open in current tab // @namespace http://target._blank.is.retarded // @version 2.2.7 // @include * // @run-at document-start // @grant GM_openInTab // ==/UserScript== if (window == top) { window.addEventListener('message', function(e) { // some stupid sites choke on object data if (!/^\{/.test(e.data)) return; var data = tryParse(e.data); if (data.name == GM_info.script.name) navigate(data.url); }); } var suppressing, clickedElement; window.addEventListener('mousedown', function(e) { clickedElement = e.target; }, true); window.addEventListener('mouseup', function(e) { if (e.button > 1 || e.target != clickedElement) return; var link = pierceShadow(e); if (!link || (link.getAttribute('href') || '').match(/^(javascript|#|$)/) || !document.contains(link)) return; var b = e.button, c = e.ctrlKey, a = e.altKey, s = e.shiftKey, m = e.metaKey; if (b == 1 || c && !a && !m) GM_openInTab(link.href, !s || b == 1); else if (window.chrome && b === 0 && s && !c && !a && !m) link.cloneNode().dispatchEvent(new MouseEvent('click', {shiftKey: true})); else if (!c && !s && !m && !a) { if (link.target == '_blank') link.target = ''; blockWindowOpenAndMutations(link); return; } else return; suppressing = true; prevent(e); }, true); window.addEventListener('click', prevent, true); window.addEventListener('auxclick', prevent, true); function prevent(e) { if (!suppressing) return; e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); setTimeout(function() { suppressing = false; }, 50); } function blockWindowOpenAndMutations(link) { var observer = new MutationObserver(function() { if (link.target == '_blank') { link.removeAttribute('target'); console.log('[Open links in current tab] prevented dynamic target=_blank for', link.href); navigate(link.href); } }); observer.observe(link, {attributes:true, attributeFilter:['target'], characterData:true}); var _open = unsafeWindow.open; var timeout = setTimeout(function() { unsafeWindow.open = _open; observer.disconnect(); }, 50); unsafeWindow.open = exportFunction(function(url, name, features) { if (!features) { console.log('[Open links in current tab] prevented window.open for', url); navigate(link.href); } else _open(url, name, features); unsafeWindow.open = _open; clearTimeout(timeout); }, unsafeWindow); } function pierceShadow(e) { var el = e.target; while (el.shadowRoot) el = el.shadowRoot.elementFromPoint(e.clientX, e.clientY); return el.closest('a'); } function navigate(url) { if (window == top) { var link = document.createElement('a'); link.href = url; link.dispatchEvent(new MouseEvent('click')); } else top.postMessage(JSON.stringify({name: GM_info.script.name, url: url}), '*'); } function tryParse(str) { try { return JSON.parse(str); } catch(e) {} }
Отсутствует
Тема закрыта
Страницы: 1