MediaWiki:Common.js
Appearance
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.
/* Any JavaScript here will be loaded for all users on every page load. */
// Pin Vector 2022 sidebar (and tools) for anonymous users by default
if (!mw.config.get('wgUserName')) {
const observer = new MutationObserver((mutationsList, observer) => {
for (const mutation of mutationsList) {
if (mutation.target.classList.contains('vector-animations-ready')) {
// Pin main menu
const mainPin = document.querySelector(
'[data-event-name="pinnable-header.vector-main-menu.pin"]'
);
if (mainPin) mainPin.click();
// (Optional) also pin page tools on the right
const toolsPin = document.querySelector(
'[data-event-name="pinnable-header.vector-page-tools.pin"]'
);
if (toolsPin) toolsPin.click();
observer.disconnect();
break;
}
}
});
observer.observe(document.documentElement, {
attributes: true,
attributeFilter: ['class']
});
}
/* ============================================================
Data Types page: auto-expand collapsible section on anchor nav
When a breadcrumb link sends the user to Data_Types#SomeSection,
this finds the collapsible div with that id and expands it,
then scrolls it into view.
============================================================ */
$(function () {
// Only run on the Data Types page
if (mw.config.get('wgPageName') !== 'Data_Types') return;
var hash = window.location.hash;
if (!hash) return;
mw.loader.using('jquery.makeCollapsible').done(function () {
var id = decodeURIComponent(hash.slice(1));
var el = document.getElementById(id);
if (!el) return;
var $target = $(el);
if (!$target.hasClass('mw-collapsible')) return;
// Small delay so makeCollapsible finishes initializing first
setTimeout(function () {
if ($target.hasClass('mw-collapsed')) {
$target.find('.mw-collapsible-toggle').first().trigger('click');
}
el.scrollIntoView({ behavior: 'smooth', block: 'start' });
}, 100);
});
});