MediaWiki:Gadget-LabelScan.js

Version vom 5. November 2025, 21:03 Uhr von Admin (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „global mw: (function(){ 'use strict'; try { console.log('[LabelScan] Gadget FILE EXECUTED'); var BOUND = false; function bindOnce(ctx){ if (BOUND) return; var root = ctx || document; var runBtn = root.querySelector('#ados-scan-run'); var fileIn = root.querySelector('#ados-scan-file'); console.log('[LabelScan] find UI → runBtn:', !!runBtn, 'fileIn:', !!fileIn); if (!runBtn || !fileIn) return;…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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
/* global mw */
(function(){
  'use strict';
  try {
    console.log('[LabelScan] Gadget FILE EXECUTED');

    var BOUND = false;

    function bindOnce(ctx){
      if (BOUND) return;
      var root = ctx || document;

      var runBtn = root.querySelector('#ados-scan-run');
      var fileIn = root.querySelector('#ados-scan-file');

      console.log('[LabelScan] find UI → runBtn:', !!runBtn, 'fileIn:', !!fileIn);

      if (!runBtn || !fileIn) return;

      if (runBtn.dataset.bound === '1') return;
      runBtn.dataset.bound = '1';
      BOUND = true;

      runBtn.addEventListener('click', function(ev){
        ev.preventDefault();
        alert('Klick funktioniert ✅  (Minimal-Diagnose)');
        console.log('[LabelScan] CLICK HANDLER FIRED');
      });

      var bigBtn = root.querySelector('#ados-scan-bigbtn');
      if (bigBtn && fileIn) {
        bigBtn.addEventListener('click', function(){ fileIn.click(); });
      }

      // Klicks sicher durchlassen
      runBtn.style.position = 'relative';
      runBtn.style.zIndex   = '9999';
      runBtn.style.pointerEvents = 'auto';
      var wrap = root.querySelector('#ados-labelscan');
      if (wrap) wrap.style.position = 'relative';

      console.log('[LabelScan] BOUND ✔');
    }

    // sofort & später binden
    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', function(){ bindOnce(document); });
    } else {
      bindOnce(document);
    }
    setTimeout(function(){ bindOnce(document); }, 200);
    setTimeout(function(){ bindOnce(document); }, 800);

    var mo = new MutationObserver(function(){
      if (BOUND) { mo.disconnect(); return; }
      bindOnce(document);
    });
    mo.observe(document.documentElement || document.body, { childList:true, subtree:true });

    console.log('[LabelScan] Gadget READY (observer active)');
  } catch (e) {
    console.error('[LabelScan] FATAL:', e);
  }
})();