← Alle Beiträge

API & Helfer

window.JZ: Helfer, um Buttons, Slider und Output Console aus Code zu steuern

Vergiss für einen Moment, dass JustZix CSS und JS in jede Seite injiziert. Konzentrier dich auf die Tatsache, dass jede Aktion — Button, Slider, Select, Toggle3, Input, Textarea — ein lebendes DOM-Element ist, das du aus anderem Code steuern kannst. Du brauchst zwei getrennte Namespaces in der MAIN world: window.JZ (Aktions-Helfer) und window.JUSTZIX (Logger). Jeder hat seinen eigenen Lebenszyklus, seinen eigenen Zweck, und sie vermischen sich bewusst nicht.

Warum zwei Namespaces und nicht einer

Logger (write-only, Dispatch in die Output Console) und DOM-Adressierbarkeit (Elemente lesen/manipulieren, die bereits im Seiten-DOM leben) sind zwei verschiedene Semantiken. Sie zusammenzupacken würde die Belange vermischen. Ein Nutzer, der Code liest, sieht JUSTZIX.log(...) und weiß: „das ist ein Logger". Er sieht document.querySelector('[data-jz-action-id="x"]') und weiß: „das ist eine DOM-Abfrage". Außerdem — die native DOM-API + data-*-Attribute gewinnen immer gegen einen proprietären Wrapper (funktioniert mit DevTools-Inspect, mit Drittanbieter-Bibliotheken, mit Copy-paste aus dem Internet).

NamespaceZweckKollisionsrisiko
window.JUSTZIXLogger — log/warn/error/info/debug in die Output ConsoleMarkenname = verschwindend kleines Kollisionsrisiko. Funktioniert überall.
window.__JUSTZIX__Alias auf dasselbe (Rückwärtskompatibilität mit v2.13.72-75)Immer gesetzt, funktioniert immer.
window.JZAktions-Helfer — click/value/setValue/action auf data-jz-action-*Kann von der Seite belegt sein (z. B. besitzt Google Ads window.JZ). Fallback: document.querySelector('[data-jz-action-id="..."]').

Idempotent — die Installation ist nach Version gegated (_jzVersion für JZ, Hook-Flag für JUSTZIX), sodass Erweiterungs-Upgrades die Namespaces nicht mitten in der Sitzung überschreiben.

Die volle API-Oberfläche

// ============================================================
// window.JZ — Aktions-Helfer
// Arbeitet auf data-jz-action-id-Elementen im DOM.
// Kann von Seitenskripten belegt sein → Fallback: native DOM-Abfrage.
// ============================================================
JZ.action(labelOrId)     // Element nach Label ODER id. Nach Label case-insensitive.
JZ.actionById(id)        // Element nach data-jz-action-id. Kein Label-Fallback.
JZ.actions()             // Array aller Aktions-Elemente im DOM.
JZ.labels()              // Array der Labels (originale Schreibweise).
JZ.click(labelOrId)      // Programmatischer Klick. Für <select> wählt die erste Option.
                          // Gibt true/false zurück.
JZ.value(labelOrId)      // Aktueller Aktionswert (String oder null).
JZ.setValue(labelOrId, value)  // Programmatischer Setter + dispatcht input + change.
JZ.bars()                // Array aller .jz-actions-bar im DOM.
JZ.barById(id)           // Bar nach data-jz-bar-id.
JZ.floatingBtn()         // Das schwebende JustZix-Button-Element (wenn aktiviert).

// ============================================================
// window.JUSTZIX — Logger (seit v2.13.73, primärer Alias seit v2.13.76)
// Dispatcht in die Output Console (kind='jz'); leitet NICHT in native console.*.
// Markenname = verschwindend kleines Kollisionsrisiko. Funktioniert überall.
// ============================================================
JUSTZIX.log(...args)
JUSTZIX.warn(...args)
JUSTZIX.error(...args)
JUSTZIX.info(...args)
JUSTZIX.debug(...args)

// Aliase auf dieselbe API:
window.__JUSTZIX__       // immer gesetzt (Rückwärtskompatibilität mit v2.13.72-75)
window.JZ                // außerdem, nur wenn nicht belegt — eine kürzere Abkürzung

// Fallback, wenn window.JZ von der Seite belegt ist (z. B. Google Ads):
// → kein JUSTZIX.click()-Äquivalent; nutze natives DOM.
document.querySelector('[data-jz-action-id="..."]').click();

Anwendungsfall 1 — ein Button klickt einen anderen Button

Du hast die Aktionen „Login → Dashboard → Stats". Drei separate Buttons in einer Aktionsleiste. Füge einen vierten „🚀 Quick" hinzu, der alle drei nacheinander ausführt:

// BUTTON-Aktion "Quick" — Code-Feld:
JZ.click('Login');
await new Promise(r => setTimeout(r, 800));
JZ.click('Dashboard');
await new Promise(r => setTimeout(r, 500));
JZ.click('Stats');
JUSTZIX.log('Quick-Flow fertig — 3 Klicks in 1');

Bonus: dieses Skript weiß nichts über die Seite, nur über seine eigenen JustZix-Aktionen. Ändere die Selektoren in „Login" / „Dashboard" — „Quick" funktioniert weiter, da es sie nach Label aufruft.

Anwendungsfall 2 — ein Slider steuert eine CSS-Variable

SLIDER-Aktion „Helligkeit" (Bereich 50-150, Standard 100). In ihrem Code-Feld:

// Der Slider führt diesen Code bei jeder Änderung aus.
// `value` ist eine vom Erweiterung injizierte extraVar (seit v2.12.2).
document.documentElement.style.setProperty('--brightness', value + '%');

Jetzt kannst du in einer anderen Aktion (BUTTON „Reset") den Wert des Sliders programmatisch setzen:

JZ.setValue('Helligkeit', 100);  // Slider springt auf 100, CSS-Variable aktualisiert, Helligkeit zurückgesetzt.
JUSTZIX.log('Helligkeit auf 100% zurückgesetzt');

Dasselbe funktioniert für TOGGLE3 (3-Zustands-Schalter wie „Dev / Staging / Prod"): JZ.setValue('Umgebung', 'staging') aktiviert genau diesen Zustand und führt seinen Code aus.

Anwendungsfall 3 — Output Console als „Notizzettel"

Die Output Console (seit v2.13.66) ist ein Pane, das alle console.log-Ausgaben der Seite erfasst. Seiten wie Gmail spammen die Konsole mit Hunderten Zeilen pro Sekunde. String-Filter helfen, aber ein besserer Trick: schreib nur deine Nachrichten über JUSTZIX.log und schalte das Pane dann in den Modus [J] (Just JustZix).

// In einer Aktion "Warenkorb prüfen": logge nur DEINE Nachrichten, kein Seitenrauschen.
const items = document.querySelectorAll('.cart-item');
JUSTZIX.log(`Warenkorb hat ${items.length} Artikel`);
items.forEach((it, i) => {
  const price = parseFloat(it.querySelector('.price')?.textContent || 0);
  JUSTZIX.log(`  [${i}] ${it.dataset.sku} — $${price}`);
});
const total = [...items].reduce((s, it) => s + parseFloat(it.querySelector('.price')?.textContent || 0), 0);
JUSTZIX.log(`Gesamt: $${total}`);

Das Output-Console-Pane im Modus [J] zeigt NUR diese 3 Zeilen — vollständig sauber, perfekt für eine QA-Toolbar oder einen Kunden-zugewandten Kontext.

Was, wenn die Seite bereits window.JZ hat?

Der Logger funktioniert immerJUSTZIX.log() hat einen Markennamen (verschwindend kleines Kollisionsrisiko) und ist der primäre. Außerdem ist window.__JUSTZIX__ immer als Fallback-Alias gesetzt. Ein window.JZ-Konflikt betrifft nur die Aktions-Helfer — und selbst dann hast du einen nativen Ausweg.

Manche Seiten (z. B. Google Ads) haben ihr eigenes window.JZ. JustZix erkennt das: wenn window.JZ beim Installieren des Loggers bereits existiert, überschreibt die Erweiterung die API der Seite nicht und vermerkt das in der Begrüßungsnachricht der Output Console. Die kurze JZ-Abkürzung ist dann für die Seite reserviert — nutze JUSTZIX zum Loggen und natives DOM für Aktionen:

// Logger: immer JUSTZIX (funktioniert auch, wenn JZ von der Seite belegt ist)
JUSTZIX.log('Warenkorb verarbeitet');

// Aktions-Klick: wenn window.JZ belegt ist → natives DOM statt JZ.click() nutzen
document.querySelector('[data-jz-action-id="actionId"]').click();
// Oder nach data-jz-key (Label in Großbuchstaben):
document.querySelector('.jz-actions-bar [data-jz-key="LOGIN"]').click();

Das ist bewusstes Design: data-jz-action-* + querySelector ist ein natives Muster — es funktioniert mit DevTools-Inspect, mit Drittanbieter-Bibliotheken, mit Copy-paste aus dem Internet. JZ.click() ist Zucker — eine optionale Indirektionsschicht, die du auslassen kannst, wenn sie nicht verfügbar ist.

Fallstricke

Was kommt als Nächstes

Das schließt die Mini-Serie über JustZix-Fenster auf der Seite ab:

Zusammen ist das eine Mini-IDE in jedem Browser-Tab, mit einer Mini-API zum Steuern deiner eigenen Buttons. Installiere JustZix und probier es selbst — völlig kostenlos, kein Konto, kein Server.

Bewerte diesen Beitrag

Noch keine Bewertungen — sei der Erste.

Probiere es selbst aus

Installiere JustZix und füge ein beliebiges Snippet aus diesem Artikel ein. Zwei Minuten von null bis zu einer funktionierenden Regel auf allen deinen Geräten.

JustZix holen

Funktionen · So funktioniert es · Beispiele · Anwendungsfälle