MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 53: | Line 53: | ||
if (userOs === "win" && tabName.includes("windows")) tab.click(); | if (userOs === "win" && tabName.includes("windows")) tab.click(); | ||
}); | }); | ||
} | }); |
Revision as of 07:18, 11 March 2025
/* Any JavaScript here will be loaded for all users on every page load. */ /* Finds elements by a selector and executes a function for each element */ function findAndExecute(selector, callback) { const elements = document.querySelectorAll(selector); elements.forEach((element) => { try { callback(element); } catch (e) { console.error(`Error while initializing "${selector}"`, e); } }); } /* tabindex="-1" is not allowed by MediaWiki, this is a workaround */ findAndExecute(".rgwiki-main-negative-tabindex", (element) => { element.tabIndex = -1; }); /* Links without href/links to "javascript:void(0)" are not allowed by MediaWiki, this is a workaround */ /* Use Template:EmptyLink to activate this piece of code. */ findAndExecute(".rgwiki-main-emptylink", (span) => { const a = span.querySelector("a"); for (const className of span.classList) { if (className !== "rgwiki-main-emptylink") { a.classList.add(className); } } a.href = "javascript:void(0)"; const parent = span.parentNode; parent.replaceChild(a, span); }); /* Localized date */ findAndExecute(".rgwiki-main-date-localized", (span) => { const inputDateString = span.dataset.datetime !== undefined ? span.dataset.datetime : span.textContent; const date = new Date(inputDateString); const outputDateString = date.toString(); span.title = `This date in your timezone: ${outputDateString}`; }); /* OS tabs */ findAndExecute(".tabber.rgwiki-main-os-tabber", (tabber) => { const oscpu = window.navigator.oscpu.toLowerCase(); let userOs = null; if (oscpu.includes("linux")) userOs = "linux"; if (oscpu.includes("mac")) userOs = "mac"; if (oscpu.includes("win")) userOs = "win"; tabber.querySelectorAll(".tabber__header > .tabber__tabs > a.tabber__tab").forEach(tab => { const tabName = tab.textContent.toLowerCase(); if (userOs === "linux" && tabName.includes("linux")) tab.click(); if (userOs === "mac" && tabName.includes("macos")) tab.click(); if (userOs === "win" && tabName.includes("windows")) tab.click(); }); });