MediaWiki:Common.js
From Phuketer
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* ABC-WIKIPEDIA-REDLINKS-START */
/**
* ABC Wiki:
* Missing imported article links should open Wikipedia in a new tab.
*
* Existing local pages stay local.
* Missing article redlinks go to:
* https://wikipedia.org/wiki/Page_Title
*/
(function () {
'use strict';
function getMissingArticleTitle(link) {
var href = link.getAttribute('href') || '';
var url;
var title;
if (!href) {
return null;
}
try {
url = new URL(href, window.location.origin);
} catch (e) {
return null;
}
if (url.searchParams.get('redlink') !== '1') {
return null;
}
title = url.searchParams.get('title');
if (!title) {
return null;
}
title = title.replace(/_/g, ' ');
// Only normal article pages.
// Do not redirect Template:, Module:, File:, Category:, User:, Talk:, Special:, etc.
if (title.indexOf(':') !== -1) {
return null;
}
return title;
}
function rewriteRedlinksToWikipedia() {
var content = document.querySelector('.mw-parser-output');
if (!content) {
return;
}
content.querySelectorAll('a.new').forEach(function (link) {
var title = getMissingArticleTitle(link);
var wikiTitle;
var wikipediaUrl;
if (!title) {
return;
}
wikiTitle = title.replace(/ /g, '_');
wikipediaUrl = 'https://wikipedia.org/wiki/' + encodeURIComponent(wikiTitle);
link.href = wikipediaUrl;
link.target = '_blank';
link.rel = 'noopener noreferrer';
link.classList.remove('new');
link.classList.add('abc-wikipedia-missing-link');
link.title = title + ' — opens on Wikipedia in a new tab';
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', rewriteRedlinksToWikipedia);
} else {
rewriteRedlinksToWikipedia();
}
}());
/* ABC-WIKIPEDIA-REDLINKS-END */