MediaWiki:Common.js
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.
mw.loader.using('mediawiki.util').then(() => {
function forceSidebarOpen() {
document.querySelectorAll('.vector-menu-checkbox').forEach(cb => {
cb.checked = true;
});
}
forceSidebarOpen();
setTimeout(forceSidebarOpen, 300);
setTimeout(forceSidebarOpen, 800);
});
document.querySelectorAll('#mw-panel .portal h3').forEach(h => {
h.style.cursor = 'pointer';
h.addEventListener('click', () => {
const content = h.nextElementSibling;
content.style.display =
content.style.display === 'none' ? 'block' : 'none';
});
});
(function () {
const current = location.pathname.replace('/wiki/', '');
document.querySelectorAll('#mw-panel a').forEach(link => {
const href = link.getAttribute('href');
if (!href || !href.includes('/wiki/')) return;
if (href.endsWith(current)) {
link.classList.add('active-page');
// auto open parent section
const portal = link.closest('.portal');
if (portal) {
const body = portal.querySelector('.body');
if (body) body.style.display = 'block';
}
}
});
})();
(function () {
const h1 = document.querySelector('#firstHeading');
if (!h1) return;
const crumb = document.createElement('div');
crumb.className = 'gitbook-breadcrumb';
crumb.innerHTML = `<a href="/wiki/Main_Page">Home</a> / ${h1.textContent}`;
document.querySelector('#content').prepend(crumb);
})();
(function () {
const links = Array.from(document.querySelectorAll('#mw-panel a[href*="/wiki/"]'));
const current = location.pathname.replace('/wiki/', '');
const index = links.findIndex(a => a.href.endsWith(current));
if (index === -1) return;
const nav = document.createElement('div');
nav.className = 'gitbook-prevnext';
if (links[index - 1]) {
nav.innerHTML += `<a class="prev" href="${links[index - 1].href}">← ${links[index - 1].textContent}</a>`;
}
if (links[index + 1]) {
nav.innerHTML += `<a class="next" href="${links[index + 1].href}">${links[index + 1].textContent} →</a>`;
}
document.querySelector('#content').appendChild(nav);
})();
(function () {
// Detect Main Page
const isHome =
document.body.classList.contains('mw-mainpage') ||
document.body.classList.contains('page-Main_Page');
// Stop auto-scroll on Home
if (isHome) return;
// Target scroll position (after breadcrumb / hero)
const content = document.getElementById('content');
if (!content) return;
// Small delay to wait layout ready
setTimeout(() => {
const y = content.getBoundingClientRect().top + window.scrollY - 20;
window.scrollTo({
top: y,
behavior: 'smooth'
});
}, 150);
})();