Clarity

Der ClarityBuilder (Fmh.Clarity(projektcode)) bindet das Analyse-Werkzeug Microsoft Clarity ein. Er rendert das Lade-Skript und stellt die gesetzten Tags als clarityProperties bereit, die fmh-web-log beim Protokollieren mitgibt. Der Aufruf gehört ins Layout.

Ohne Projektcode – abgeschaltet

Ohne Projektcode rendert der Builder nur den Kommentar <!-- disabled --> und lädt kein Skript. So bleibt die Einbindung im Layout stehen, auch wenn eine Umgebung ohne Clarity läuft.

@* Ohne Projektcode bleibt der Builder still: Er rendert nur einen Kommentar und lädt kein Skript.
   Die Demo-Anwendung bindet Clarity deshalb ohne Code ein – ein echter Projektcode würde beim
   Aufruf dieser Seite Daten an clarity.ms senden. *@

@Html.Fmh(Fmh.Clarity(string.Empty))

<p class="mb-0">Ausgabe an dieser Stelle ist nur <code>&lt;!-- disabled --&gt;</code> im Quelltext
    der Seite. Mit Projektcode entstünde hier das Lade-Skript von Clarity samt der Variablen
    <code>clarityProperties</code> mit den gesetzten Tags.</p>

Darstellung

Ausgabe an dieser Stelle ist nur <!-- disabled --> im Quelltext der Seite. Mit Projektcode entstünde hier das Lade-Skript von Clarity samt der Variablen clarityProperties mit den gesetzten Tags.

Der ClarityBuilder wird über Fmh.Clarity(projektcode) erzeugt und mit @Html.Fmh(...) gerendert — einmalig im Layout, damit die Aufzeichnung auf allen Seiten läuft:

@Html.Fmh(Fmh.Clarity(einstellungen.ClarityProjectCode)
    .AddTag("mandant", benutzer.Mandant)
    .AddTag("rolle", benutzer.Rolle))

Der Builder rendert das Lade-Skript von Microsoft Clarity und legt die gesetzten Tags als JavaScript-Variable clarityProperties ab.

Methoden

Methode Erklärung
Fmh.Clarity(code) Erzeugt den Builder und setzt den Projektcode in einem Schritt.
.ProjectCode(string) Setzt den Projektcode nachträglich.
.AddTag(key, value) Ergänzt ein Tag. Mehrfach aufrufbar; derselbe Schlüssel zweimal wirft eine Ausnahme (Dictionary.Add).

Abschalten

Ist der Projektcode leer oder nur Leerzeichen, rendert der Builder nur <!-- disabled --> — kein Skript, keine Verbindung zu clarity.ms. Damit kann der Aufruf im Layout stehen bleiben und die Aufzeichnung über die Konfiguration je Umgebung gesteuert werden (typisch: Produktion mit Code, Test ohne).

Tags und Protokollierung

Die Tags landen in clarityProperties und werden von fmh-web-log beim Protokollieren mitgegeben. Sie sind damit der Faden zwischen einer Clarity-Aufzeichnung und den eigenen Log-Einträgen. Personendaten gehören nicht hinein — Clarity ist ein Dienst ausserhalb der Anwendung.

Wenn das Skript blockiert wird

Der Builder registriert einen onerror-Handler: Blockiert ein Adblocker oder eine Firewall die Datei, meldet er das über window.log.error («Clarity blocked») bzw. ersatzweise über console.warn. Die Anwendung läuft dabei normal weiter.

Zu dieser Demo

Die Demo-Seite bindet den Builder bewusst ohne Projektcode ein — mit Code würde schon das Öffnen dieser Seite Daten an clarity.ms senden.