Довідка:Інструменти/Навігації
Для того, щоб персональні скрипти працювали, їх копію або їх імпортування (починається командою importScript) потрібно розмістити на спеціальній сторінці common.js, яка є підсторінкою особистого простору користувача (Користувач:АccountName/common.js). Ця сторінка може містити декілька скриптів.
При наведенні курсора мишки на внутрішнє посилання скрипт показує відповідну сторінку Вікіпедії у виринаючому віконці.
Імовірно, це найпопулярніший персональний скрипт в проєктах Вікімедіа.
Документація: en:Wikipedia:Tools/Navigation_popups, вказано багато додаткових параметрів.
Встановлення:
importScript('User:Js~ukwiki/popups.js');
Приклад зазначення додаткових параметрів:
popupDelay = 1.5; // затримка на півтори секунди перед випливанням вікна popupStructure = 'fancy'; // не об'єднувати навігаційні посилання у випадні списки imagePopupsForImages = false; // не випливати на ілюстраціях popupMaxWidth = 400; // ширина випливаючого вікна popupMaxPreviewSentences = 10; // більше пропозицій у вікні popupMaxPreviewCharacters = 666; // більше символів у вікні popupPreviewFirstParOnly = false; // цитується не тільки перший абзац popupPreviewKillTemplates = false; // шаблони показувати, хай і сирими
Цей простий, але дуже корисний скрипт дозволяє набагато зручніше стежити за змінами сторінок у вашому списку спостереження:
importScript('User:Ilmari_Karonen/watchsince.js','en');
Інструкція: перейдіть до свого списку спостереження і прогляньте усі цікаві вам зміни, не йдучи з цієї сторінки (наприклад використовуючи «Навігаційні віконця» або відкриваючи зміни в нових вікнах браузера).
Потім натисніть на нове посилання «Changes since last load», яка повинна бути праворуч від посилання «Приховати малі редагування». Сторінка спостереження покаже вам тільки нові зміни. Далі продовжуйте натискати посилання «Changes since last load»; важливо при цьому не йти із сторінки спостереження.
Примітка: використовуваний скриптом параметр days можна використовувати і «вручну». Якщо ви запустили бравзер і зайшли на сторінку списку спостереження, і пам'ятаєте, що востаннє перевіряли його 2 години тому, то можете дописати в адресному рядку браузера ?days=0.1 і натиснути Enter. Це покаже вам зміни за останніх 24/10 = 2.4 години
Цей скрипт додає "(скасувати)" до кожного елементу списку спостереження, так що його навігація виглядає так: (різн.) (історія) (скас.). Корисно для користувачів з багатьма статтями у списку спостереження.
addOnloadHook(function () { // Check if we're on the watchlist if (!wgCanonicalSpecialPageName || wgCanonicalSpecialPageName != "Watchlist") return; if (!document.forms[0] || !document.forms[0].namespace) return; // Unwatch links go back to watchlist with "Removing requested items from watchlist..." message var query_prefix = "title="+encodeURIComponent(wgPageName)+"&action=submit&remove=1&id[]="; // ...or... // Unwatch links go to "Removed from watchlist" page //var query_prefix = "action=unwatch&title="; // get list of all links in content: var links = document.getElementById('content').getElementsByTagName('a'); // make a static copy of the nodelist and lose the original for speed // while we're at it, prune the uninteresting links from the list var linksCopy = new Array (); for (var i = 0; i < links.length; i++) { if (/[?&]action=history([&#]|$)/.test(links[i].href)) linksCopy.push(links[i]); } links = linksCopy; for (var i = 0; i < links.length; i++) { // create unwatch link and append it after history link var unwatch = document.createElement('a'); unwatch.href = wgServer + wgScriptPath + "/index.php?" + query_prefix + encodeURIComponent(links[i].title); unwatch.title = "Скасувати спостереження за "+links[i].title; unwatch.appendChild(document.createTextNode("скас.")); links[i].parentNode.insertBefore(unwatch, links[i].nextSibling); // insert a delimiter between the two links var delim = links[i].previousSibling; delimText = (delim.nodeType == 3 ? delim.nodeValue : ""); // kluge to handle case where "diff" is unlinked delim = document.createTextNode(delimText.replace(/^.*diff/, "")); links[i].parentNode.insertBefore(delim, unwatch); } });
</nowiki>
Підсторінки поточної сторінки
if (wgNamespaceNumber >= 0) addOnloadHook(function(){ addPortletLink('p-tb', '/wiki/Special:Prefixindex/' + wgPageName + '/', 'Підсторінки'); })
Джерело: pl:Wikipedysta:Adziura/AutoComplete.js. Під час вписування в полі „Пошук” до нього додається випадаючий список статей, назви яких починаються з вписаних літер. Вираз «nie znaleziono» у вашому монобуці можна замінити на «не знайдено».
<div style="float:right; margin-left:20px; border:1px dashed gray; padding:15px; background:#FAFFFF; font-size:90%"> <div style="border:2px inset gray"> </div> <span style="background:#d6d3ce;padding:1px; border:2px outset white; margin-top:10px"> '''Перейти''' </span> <span style="border:2px inset gray"> знайти у… <span style="background:#d6d3ce; border:1px outset white; font-size:70%"> ν </span> </span> </div>
Вибір простору у стандартному блоці пошуку
if (!window.searchInNewWindow) searchInNewWindow = false; var searchNS = [ ['','знайти в…'], [-5,'(у цьому вікні)'], [-1,'За замовчуванням'], [0,'Статті'], [1,'Статті (обг)'], [2,'Користувач'], [3,'Користувач (обг)'], [4,'Вікіпедія'], [5,'Вікіпедія (обг)'], [6,'Зображення'], [7,'Зобр. (обг)'], [8,'Mediawiki'], [9,'Mediawiki (обг)'], [10,'Шаблон'], [11,'Шаблон (обг)'] ]; addOnloadHook(searchCreateMenu); function searchCreateMenu() { searchForm = document.getElementById('searchform'); //global var if (!searchForm) return; //create hidden input searchHidden = document.createElement('input'); //global var searchHidden.type = 'hidden'; searchHidden.value = '1'; searchForm.fulltext.parentNode.appendChild(searchHidden); //create select searchSel = document.createElement('select'); //global var for (var i in searchNS) searchSel.options[searchSel.options.length] = new Option(searchNS[i][1], searchNS[i][0]); searchSetTarget(); searchSel.style.margin = '0'; searchSel.style.marginTop = '2px'; searchSel.style.fontSize = '90%'; searchSel.onchange = searchOnSelect; searchForm.fulltext.parentNode.insertBefore(searchSel, searchHidden); //hide normal Search button if not IE if (is_opera || is_gecko){ searchForm.fulltext.style.display = 'none'; searchSel.style.width = '65px'; } } function searchOnSelect() { if (this.selectedIndex === 0) return; var ns = this.options[this.selectedIndex].value; if (ns == -5) { //new window switch searchInNewWindow = !searchInNewWindow; searchSetTarget(); } else { //do search if (searchForm.search.value === '') searchForm.search.value = '?'; else { searchHidden.name = (ns == -1) ? '' : 'ns' + ns; searchForm.fulltext.click(); } } this.selectedIndex = 0; } function searchSetTarget(){ if (searchInNewWindow) { searchForm.target = '_blank'; searchSel.options[1].text = '(у цьому вікні)'; } else { searchForm.target = ''; searchSel.options[1].text = '(у новому вікні)'; } }
Джерело: ru:Участник:Morpheios Melas/articlecount.js
Скрипт розміщує на логотипі Вікіпедії живий лічильник статей. Оновлюється що 10 секунд.
var basecount=195133; var basetime=new Date(Date.UTC(2007, 7, 14, 12, 31, 0, 0)) var curcount=0; var updrest=10; function LiveCountReq() { req.onreadystatechange = processCount; req.open("GET", "http://uk.wikipedia.org/wiki/Special:Statistics?action=raw&randomseed="+Math.floor(Math.random()*10000000), true); req.send(null); } function processCount() { if (req.readyState == 4) { if (req.status == 200) { curcount=req.responseText.substring(req.responseText.indexOf('good=',1)+5, req.responseText.indexOf(';views=',1)); var curtime=new Date; var progn=(250000-basecount)* (curtime.valueOf()-basetime.valueOf())/ (curcount-basecount)+basetime.valueOf(); var progd=new Date(progn); document.getElementById('articlecount').innerHTML=curcount; var secs=Math.floor((progd-curtime)/1000) var days=Math.floor(secs/24/60/60); var hours=Math.floor((secs-days*24*60*60)/60/60); var mins=Math.floor((secs-days*24*60*60-hours*60*60)/60); var lsecs=Math.floor(secs-days*24*60*60-hours*60*60-mins*60); document.getElementById('articlecountdown').innerHTML=Math.floor(days/10)+''+days%10+'d '+Math.floor(hours/10)+hours%10+':'+Math.floor(mins/10)+mins%10+':'+Math.floor(lsecs/10)+lsecs%10; } else { document.getElementById('articlecount').innerHTML='??????'; document.getElementById('articlecountdown').innerHTML='??????'; } updrest-=1; if (updrest>0) { setTimeout('LiveCountReq();',60000); } else { document.getElementById('articlecount').innerHTML='??????'; document.getElementById('articlecountdown').innerHTML='??????'; } } } function updateLastMouse(e) { if (updrest<1) { updrest=10; setTimeout('LiveCountReq();',1000); } else { updrest=10; } } function addLiveCount() { req = null; if (window.XMLHttpRequest) { try { req = new XMLHttpRequest(); } catch (e){} } else if (window.ActiveXObject) { try { req = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e){ try { req = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e){} } } if (req) { document.getElementById('p-logo').innerHTML='<a style="background-image: url(http://upload.wikimedia.org/wikipedia/uk/b/bc/Wiki.png);" href="/Головна_стаття" title="Перейти до Головної сторінки [z]" accesskey="z"></a><div id="articlecount" style="display:block;position:absolute;left:5px;top:100px;align:center; color:#222222; font-size: 8pt;opacity:0.7;background:#FFFFFF;padding:0em 0.25em;">??????</div><div id="articlecountdown" style="display:block;position:absolute;left:60px;top:100px;align:center; color:#773333; font-size: 8pt;opacity:0.7;background:#FFFFFF;padding:0em 0.25em;">??????</div>' if (window.addEventListener) window.addEventListener("mousemove", updateLastMouse, false); else if (window.attachEvent) window.attachEvent("mousemove", updateLastMouse); LiveCountReq(); } } addOnloadHook(addLiveCount);
Джерело: ru:Участник:Alex Smotrov/logpage.js
В український Вікіпедії скрипт працює неправильно.
importScript('Користувач:Ahonc/markadmins.js')
Наприклад, Oleksii0 стане Oleksii0(A), а Yakudza — Yakudza(B)