>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Поддержка пользователей http://forum.mozilla-russia.org/viewforum.php?id=26 >Открывать все ссылки в текущей вкладке. Запрет открытия новых вкладок http://forum.mozilla-russia.org/viewtopic.php?id=71900 |
Lash > 08-05-2017 13:28:54 |
Собственно, вопроса два, но смысл один. Дальше эмоции - можно не читать, просто накипело. |
okkamas_knife > 08-05-2017 15:48:08 |
кто мешает? изучай матчасть,изменяй код - всё открыто и доступно. |
villa7 > 08-05-2017 16:42:15 |
Lash |
thrower > 08-05-2017 16:46:40 |
Есть вот такая вещь. Заменяет blank на self. Работает в 95% случаев, остальные 5% - скриптовые ссылки. target blank to target self Выделить код Код:// ==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'); И есть вот такая вещь. Работает в 100% случаев. Open links in current tab Выделить код Код:// ==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) {} } |
Sergeys > 09-05-2017 00:26:22 |
поиск: все ссылки в текущей вкладке |