MediaWiki:Gadget-LabelScan.js: Unterschied zwischen den Versionen
Erscheinungsbild
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
/* LabelScan Gadget – | /* LabelScan Gadget – HARD BIND TEST (delegated click + hooks + observer) */ | ||
(function () { | (function () { | ||
'use strict'; | 'use strict'; | ||
document.addEventListener(' | // 1) Sofort melden, dass das Gadget wirklich ausgeführt wurde | ||
console.log('[LabelScan TEST] Modul ausgeführt (IIFE gestartet)'); | |||
if ( | // 2) Delegiertes Click-Event: reagiert auch, wenn der Button später ins DOM kommt | ||
document.addEventListener('click', function (ev) { | |||
var el = ev.target; | |||
// trifft auf #ados-scan-run oder ein Kindelement davon | |||
if (el && (el.id === 'ados-scan-run' || (el.closest && el.closest('#ados-scan-run')))) { | |||
ev.preventDefault(); | ev.preventDefault(); | ||
alert('✅ Gadget | console.log('[LabelScan TEST] Click auf #ados-scan-run erkannt'); | ||
alert('✅ Gadget hängt am Button. (Binding OK)'); | |||
} | |||
}, true); | |||
// 3) Zusätzlich über MediaWiki-Hooks jedes Mal melden, wenn Seitenteil gerendert wurde | |||
if (window.mw && mw.hook) { | |||
mw.hook('wikipage.content').add(function ($content) { | |||
console.log('[LabelScan TEST] wikipage.content hook', $content && $content.length); | |||
// Optional: einmal visuell markieren, dass der Button da ist | |||
var btn = document.getElementById('ados-scan-run'); | |||
if (btn && !btn.dataset._lscanMark) { | |||
btn.dataset._lscanMark = '1'; | |||
btn.style.outline = '2px dashed #22c55e'; | |||
btn.style.outlineOffset = '2px'; | |||
} | |||
}); | }); | ||
}); | } | ||
// 4) Fallback: Wenn der Button gar nicht existiert, füge oben rechts einen Test-Button ein | |||
// (nur, um zu beweisen, dass das Gadget läuft) | |||
setTimeout(function () { | |||
if (!document.getElementById('ados-scan-run')) { | |||
var test = document.createElement('button'); | |||
test.textContent = 'LabelScan Test'; | |||
test.style.cssText = 'position:fixed;top:10px;right:10px;z-index:99999;padding:.5rem .8rem;border-radius:8px;border:1px solid #ccc;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15);'; | |||
test.addEventListener('click', function () { | |||
alert('✅ Gadget läuft. (Seiten-UI-Button #ados-scan-run ist auf dieser Seite aber nicht vorhanden)'); | |||
}); | |||
document.body.appendChild(test); | |||
console.log('[LabelScan TEST] Fallback-Testbutton eingefügt (weil #ados-scan-run nicht gefunden wurde)'); | |||
} | |||
}, 500); | |||
})(); | })(); | ||
Version vom 6. November 2025, 22:03 Uhr
/* LabelScan Gadget – HARD BIND TEST (delegated click + hooks + observer) */
(function () {
'use strict';
// 1) Sofort melden, dass das Gadget wirklich ausgeführt wurde
console.log('[LabelScan TEST] Modul ausgeführt (IIFE gestartet)');
// 2) Delegiertes Click-Event: reagiert auch, wenn der Button später ins DOM kommt
document.addEventListener('click', function (ev) {
var el = ev.target;
// trifft auf #ados-scan-run oder ein Kindelement davon
if (el && (el.id === 'ados-scan-run' || (el.closest && el.closest('#ados-scan-run')))) {
ev.preventDefault();
console.log('[LabelScan TEST] Click auf #ados-scan-run erkannt');
alert('✅ Gadget hängt am Button. (Binding OK)');
}
}, true);
// 3) Zusätzlich über MediaWiki-Hooks jedes Mal melden, wenn Seitenteil gerendert wurde
if (window.mw && mw.hook) {
mw.hook('wikipage.content').add(function ($content) {
console.log('[LabelScan TEST] wikipage.content hook', $content && $content.length);
// Optional: einmal visuell markieren, dass der Button da ist
var btn = document.getElementById('ados-scan-run');
if (btn && !btn.dataset._lscanMark) {
btn.dataset._lscanMark = '1';
btn.style.outline = '2px dashed #22c55e';
btn.style.outlineOffset = '2px';
}
});
}
// 4) Fallback: Wenn der Button gar nicht existiert, füge oben rechts einen Test-Button ein
// (nur, um zu beweisen, dass das Gadget läuft)
setTimeout(function () {
if (!document.getElementById('ados-scan-run')) {
var test = document.createElement('button');
test.textContent = 'LabelScan Test';
test.style.cssText = 'position:fixed;top:10px;right:10px;z-index:99999;padding:.5rem .8rem;border-radius:8px;border:1px solid #ccc;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.15);';
test.addEventListener('click', function () {
alert('✅ Gadget läuft. (Seiten-UI-Button #ados-scan-run ist auf dieser Seite aber nicht vorhanden)');
});
document.body.appendChild(test);
console.log('[LabelScan TEST] Fallback-Testbutton eingefügt (weil #ados-scan-run nicht gefunden wurde)');
}
}, 500);
})();