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); } })();