InitContext

Die eine normalisierte Init-Form, identisch in allen drei Umgebungen erzeugt. Das ist der Wert, mit dem das dashlet.init-Versprechen genau ein Mal erfüllt wird — inklusive des Standalone-Zustands als abgemilderter, aber beobachtbarer Zustand (kein Fehler) — und das Argument der Listener onInit und onUpdate.

1. Felder

Feld Typ Bedeutung

environment

EnaioEnvironment

'webclient' | 'richClient' | 'standalone' — die erkannte Laufzeitumgebung.

clientType

string | null

Der vom Host deklarierte Client-Typ (web, desktop_app, rich_client, …), wenn bekannt.

clientVersion

string | null

Client-Version (geschnitten), wenn bekannt.

language

string | null

Sprachkürzel der Benutzeroberfläche (de, en, …), wenn bekannt.

session

SessionInfo

guid (Sitzungs-ID) und timeoutMs — der vom Host deklarierte Sitzungstimeout (nur Webclient), sonst null.

user

UserInfo

id, name, guid, email (jeweils string | null) und groups (string[]).

context

string | null

Webclient-Kontextzeichenkette (hitlist.result, …); im Rich Client und Standalone null.

selection

SelectedEntry[]

Gleichförmiges Auswahlfeld (leer, wenn nichts ausgewählt ist) — Elementtyp SelectedEntry.

lastSelectedEntry

SelectedEntry | null

Zuletzt ausgewählter Eintrag, oder null bei leerer Auswahl.

location

LocationInfo | null

Umgebender Ort (objectId, objectTypeId), oder null bei keinem (Root).

raw

unknown

Das rohe Host-Payload, für Transkript/Debugging aufbewahrt.

2. Wie der Kontext erzeugt wurde

Die Init-Ausgabe trägt ein InitInfo, dessen source einer der Werte ist:

source Bedeutung

webclientEvent

Erste akzeptierte onInit-Nachricht (Webclient-postMessage-Wire).

richClientSelfInit

Bridge-Lesung, nachdem window.osClient aufgetaucht ist (kein Host-Event).

richClientCallback

Erster Host-Aufruf von window.osDashletInit.

standalone

Erkennungs-Timeout verstrichen, ohne Bridge oder Event.

Sicherheit: Host-Zeichenketten sind keine vertrauenswürdige Eingabe. Die vom Host mitgelieferten Zeichenketten in diesem Kontext (Benutzername / Anzeigename / E-Mail, Sitzungs-Guid, clientType / clientVersion, language, context) stammen aus dem Host und sind als nicht vertrauenswürdig zu behandeln: Sie müssen vor der Einfügung in HTML maskiert werden — eine Seite mit gleichem Origin oder im Lernmodus kann sie manipulieren.

3. Beispiel

const context = await dashlet.init;

if (context.environment === 'standalone') {
    showOfflineFallback();
    return;
}

// Vor jeder Einfügung in HTML maskieren — Host-Zeichenketten sind nicht vertrauenswürdig:
renderUser(escapeHtml(context.user.name));