Участник:Ignatus/LinkReTarget.js

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
/*
Скрипт делает так, чтобы внешние ссылки на страницах Википедии
 открывались в новом окне по умолчанию. Можно изменить поведение,
 записав перед вызовом установки скрипта
LinkReTarget={ignore:new RegExp('какое-то другое регулярное выражение')};
 Также можно открывать в новом окне ссылки на интервики и некоторые внутренние ссылки:
LinkReTarget={
iw:1, // для интервики, эквивалентно изменению ignore и добавлением 'p-lang' в divs
divs:['p-participation','p-tb','p-coll-print_export'],
//id блоков боковой панели, можно посмотреть в браузере по опции "Исходный код страницы"
always:new RegExp('^(?:(?:(?:https?://)?(?:www\.)?ru\.wikipedia\.org)?/)?(?:wiki/|w/index\.php\?title=)(?:%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F|Служебная|Special):')
//пример РВ для того, чтобы открывались ссылки на служебные страницы
};
 Для установки скрипта скопируйте в код Special:MyPage/common.js (или JS темы) строку
importScript('User:Ignatus/LinkReTarget.js');
 Посли установки обновите кэш браузера (см. ВП:Кэш).

 Замечание: когда-нибудь браузеры, возможно, будут поддерживать CSS 3,
 с которым это делается проще установкой CSS-свойства target для нужных классов ссылок.
*/
LinkReTarget=window.LinkReTarget || new Object;
if ( !LinkReTarget.ignore ){LinkReTarget.ignore = new RegExp(
  '^(?:https?://)?(?:' + (LinkReTarget.iw ? 'ru' : '[\w.]*') +
  '\.(?:wiki(?:pedia|media)\.org|mediawiki\.org))?[?/:]'
,'i')}
LinkReTarget.f=function(){
var zone = document.getElementById('wikiPreview')      || document.getElementById('bodyContent')
        || document.getElementById('mw_contentholder') || document.getElementById('article');
var F=function(z){if (!z) return;
var A_s=z.getElementsByTagName('A');
for(var A=0; A<A_s.length; A++){
   if( ! LinkReTarget.ignore.test(A_s[A].href)
        || LinkReTarget.always && LinkReTarget.always.test(A_s[A].href)
   ){
     A_s[A].target='_blank'
   }
}};//var F
F(zone);
with(LinkReTarget){
 if(divs){
   for(var A=0; A<divs.length;A++){
    F(document.getElementById(divs[A]))
   } 
 }
 if(iw){ F(document.getElementById('p-lang')) }
}//with(LinkReTarget)
};//LinkReTarget.f
if ( mw.config.get('wgNamespaceNumber') >= 0 && mw.config.get('wgUserName') ) jQuery( LinkReTarget.f );