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 Wiki compatibility:
* Imported Wikipedia articles should work as entrance pages.
*
* Existing local pages stay local.
* Missing article links (redlinks) open the matching English Wikipedia page in a new tab.
*/
(function () {
'use strict';
function getMissingPageTitle(link) {
var href, url, title;
href = link.getAttribute('href') || '';
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 auto-send normal article links to Wikipedia.
// Avoid Template:, Module:, File:, Category:, User:, Talk:, Special:, etc.
if (title.indexOf(':') !== -1) {
return null;
}
return title;
}
function rewriteMissingWikipediaLinks() {
var content = document.querySelector('.mw-parser-output');
if (!content) {
return;
}
content.querySelectorAll('a.new').forEach(function (link) {
var title = getMissingPageTitle(link);
var wikipediaUrl;
if (!title) {
return;
}
wikipediaUrl = 'https://en.wikipedia.org/wiki/' + encodeURIComponent(title.replace(/ /g, '_'));
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 English Wikipedia in a new tab';
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', rewriteMissingWikipediaLinks);
} else {
rewriteMissingWikipediaLinks();
}
}());