MediaWiki:Mobile.js
Erscheinungsbild
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/**
* Minerva (mobile): Link "The Tasteful 8" ins Hamburger-Menü einfügen
* Ziel: /wiki/Kategorie:The_Tasteful_8
* Robust gegen DOM-Varianten; hängt den Link unten bei den Sitelinks an.
*/
(function () {
if (mw.config.get('skin') !== 'minerva') return;
var LINK_ID = 'menu-the-tasteful-8';
var LINK_TEXT = 'The Tasteful 8';
var LINK_HREF = '/wiki/Kategorie:The_Tasteful_8';
function makeItem(doc) {
var li = doc.createElement('li');
li.id = LINK_ID;
// gängige Minerva-Klassen; falls sie fehlen, stört es nicht
li.className = 'menu__item';
var a = doc.createElement('a');
a.className = 'menu__item--link';
a.href = LINK_HREF;
a.textContent = LINK_TEXT;
li.appendChild(a);
return li;
}
function findSiteLinksUL(root) {
// 1) Versuche, die UL mit "Über ADOS Wiki" oder "Haftungsausschluss" zu finden
var anchors = root.querySelectorAll('nav a, .menu a, #mw-mf-page-left a');
var targetUL = null;
anchors.forEach(function (a) {
var t = (a.textContent || '').trim();
if (t === 'Über ADOS Wiki' || t === 'Haftungsausschluss') {
var ul = a.closest('ul');
if (ul) targetUL = ul;
}
});
if (targetUL) return targetUL;
// 2) Fallback: nimm die letzte Menü-UL im Drawer
var lists = root.querySelectorAll('#mw-mf-page-left nav ul, nav.minerva-navigation ul, .menu ul');
return lists.length ? lists[lists.length - 1] : null;
}
function insertLink() {
var drawer = document.getElementById('mw-mf-page-left') || document.body;
var ul = findSiteLinksUL(drawer);
if (!ul) return false;
if (ul.querySelector('#' + LINK_ID)) return true; // schon drin
ul.appendChild(makeItem(document)); // unten anhängen
return true;
}
function arm() {
// 1) Sofort versuchen
insertLink();
// 2) Beobachte DOM-Änderungen (wenn Nutzer den Burger öffnet / Lazy-Build)
var mo = new MutationObserver(function () { insertLink(); });
mo.observe(document.body, { childList: true, subtree: true });
// 3) Sicherheitshalber ein paar Retries (MobileFrontend initialisiert asynchron)
var tries = 0;
var timer = setInterval(function () {
tries++;
var ok = insertLink();
if (ok || tries > 10) clearInterval(timer);
}, 250);
}
if (mw.hook) {
mw.hook('mobileFrontend.pageReady').add(arm);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', arm);
} else {
arm();
}
})();