🏠 Home 

Vector Layout for Wikipedia (Fast)

returns old Wikipedia layout. (layout before 2023 redesign of the website)

// ==UserScript==
// @name Vector Layout for Wikipedia (Fast)
// @namespace -
// @version 1.1.13
// @description returns old Wikipedia layout. (layout before 2023 redesign of the website)
// @author NotYou
// @match *://wikipedia.org/*
// @match *://*.wikipedia.org/*
// @match *://wiktionary.org/*
// @match *://*.wiktionary.org/*
// @match *://wikinews.org/*
// @match *://*.wikinews.org/*
// @match *://wikivoyage.org/*
// @match *://*.wikivoyage.org/*
// @match *://wikiquote.org/*
// @match *://*.wikiquote.org/*
// @match *://wikiversity.org/*
// @match *://*.wikiversity.org/*
// @match *://wikibooks.org/*
// @match *://*.wikibooks.org/*
// @match *://wikifunctions.org/*
// @match *://*.wikifunctions.org/*
// @match *://www.mediawiki.org/*
// @match *://wikitech.wikimedia.org/*
// @match *://foundation.wikimedia.org/*
// @match *://meta.wikimedia.org/*
// @match *://species.wikimedia.org/*
// @match *://incubator.wikimedia.org/*
// @match *://outreach.wikimedia.org/*
// @match *://wikimania.wikimedia.org/*
// @run-at document-start
// @license GPL-3.0-or-later
// @grant none
// ==/UserScript==
(function() {
'use strict';
const MAKE_CLEAN_URL = false; // removes "useskin=vector" after loading
const IS_DEBUG_MODE = false; // instead of redirecting, logs information in console
const DEBUG_TITLE = 'VLfW — Debug\n';
const { href } = location;
redirect(href, false, () => {
if(MAKE_CLEAN_URL) {
const url = new URL(href);
const { searchParams, pathname } = url;
if(searchParams.get('useskin') === 'vector') {
searchParams.delete('useskin');
const newSearchParams = searchParams.toString();
const newPath = pathname + (newSearchParams ? '?' + newSearchParams : newSearchParams);
history.replaceState({}, '', newPath);
}
}
});
window.addEventListener('click', onClick);
function redirect(inputUrl, saveHistory, onFinish) {
let url;
try {
url = new URL(inputUrl);
} catch(e) {
throw new Error('"' + inputUrl + '" is not valid URL!');
}
const { searchParams, pathname, origin } = url;
const cleanURL = origin + pathname;
if(searchParams.get('useskin') !== 'vector' && url.pathname !== '/') {
searchParams.set('useskin', 'vector');
const params = '?' + searchParams.toString();
const r###ltURL = cleanURL + params;
const newPath = pathname + params;
if(IS_DEBUG_MODE) {
console.log(DEBUG_TITLE, r###ltURL, newPath);
} else {
replaceURL(r###ltURL, saveHistory);
}
}
if (typeof onFinish === 'function') {
onFinish()
}
}
function onClick(e) {
const node = e.target;
const link = getLink(node);
if(link && !(e.ctrlKey || e.metaKey)) {
const url = new URL(link.href);
const isOrigin = url.hostname.indexOf('wikipedia.org') > -1;
const isNotAnchor = !link.getAttribute('href').startsWith('#');
const isOnlyLink = !link.getAttribute('role');
if(isOrigin && isNotAnchor && isOnlyLink) {
e.preventDefault();
redirect(url, false);
}
}
}
function replaceURL(url, saveHistory) {
if(saveHistory) {
location.assign(url);
} else {
location.replace(url);
}
}
function getLink(node) {
if(node.tagName === 'A') {
return node;
} else if(node.tagName === 'HTML' || !node.tagName) {
return null;
}
return getLink(node.parentNode);
}
})();