Blazor sono quattro diverse sistemazioni di hosting che portano un nome solo, e lo snippet va in un file diverso in ognuna. La regola sotto è la stessa: appartiene al guscio che sopravvive alla navigazione, mai a una pagina.

Questo sito è un'applicazione Blazor, ed è misurato da Skomi in questo modo.

Vai prima a prendere lo snippet dalla tua dashboard:

<script src="https://t.skomi.com/s/YOUR-SITE-ID.js" defer></script>

Dove va

Il tuo progetto File Dove al suo interno
Blazor Web App (.NET 8+) Components/App.razor Nel <body>, dopo <Routes />
Blazor WebAssembly autonomo wwwroot/index.html Nel <body>, prima dello script della framework
Blazor Server (.NET 6/7) Pages/_Host.cshtml o Pages/_Layout.cshtml Nel <body>
MAUI Blazor Hybrid non applicabile Non è questa la guida: quella è un'app, vedi installare su MAUI

Per un Blazor Web App ha questo aspetto:

<body>
    <Routes />

    <script src="https://t.skomi.com/s/YOUR-SITE-ID.js" defer></script>
    <script src="_framework/blazor.web.js"></script>
</body>

Perché non in un layout o in una pagina

Uno script inserito dalla navigazione migliorata non viene eseguito. Blazor rattoppa il DOM invece di ricaricare il documento, e un tag <script> che arriva come parte di quel rattoppo non gira. Quindi uno snippet messo in MainLayout.razor o in un componente di pagina funziona al primo caricamento, è morto in silenzio dopo la prima navigazione interna, e sembra installato per tutto il tempo.

App.razor sta fuori da tutto quello che Blazor sostituisce. Il tag carica una volta, e resta caricato.

La navigazione viene contata per te

Succedono due cose diverse a seconda che tu rilasci o no il runtime di Blazor, e tutte e due sono già gestite.

Con blazor.web.js. I collegamenti interni usano la navigazione migliorata: il documento sopravvive e l'indirizzo cambia attraverso history.pushState. Lo script di Skomi avvolge pushState e replaceState e ascolta popstate, quindi ognuna di quelle è una pagina vista. Niente a cui iscriversi, niente da chiamare alla navigazione.

Senza. Un'applicazione Blazor resa staticamente e senza interattività non rilascia nessun runtime, quindi ogni collegamento è un caricamento di pagina normale e conta come su qualunque altro sito. Questo sito è quel caso.

Non devi sapere quale dei due sei: lo stesso tag nello stesso posto è giusto per tutti e due.

Una navigazione che non cambia l'indirizzo non viene contata, in nessuna delle due modalità. Le strisce di schede, le fisarmoniche e i cambi di filtro senza parametri sono interazioni, non pagine viste. Se le vuoi misurate, manda un evento.

Le modalità di rendering interattive qui non cambiano niente

InteractiveServer, InteractiveWebAssembly e InteractiveAuto decidono dove girano i tuoi componenti, non come la pagina viene consegnata al browser. Lo snippet sta sopra tutto quello dentro App.razor e si comporta in modo identico sotto ognuna. Anche le modalità di rendering per singolo componente sono irrilevanti; c'è un documento e uno script.

Se non arriva niente

  • Il tag è in App.razor e non in un layout? Vedi l'avviso qui sopra; è per questo fallimento che questa guida esiste.
  • È dentro il <body>? Nel <head> funziona lo stesso, ma tienilo fuori dai piedi di <HeadOutlet />: quell'uscita è per il contenuto che i componenti contribuiscono, e un tracker non è uno di quelli.
  • dotnet watch e un documento in cache. La navigazione migliorata e il ricaricamento a caldo ti possono lasciare a guardare una pagina costruita prima che tu aggiungessi il tag. Fai una ricarica forzata una volta.
  • Il localhost non viene contato. Pubblicalo, oppure prova contro un nome host vero.

Vedi lo snippet per che cosa fa una volta caricato, e misurare un'app se quello che stai misurando è software che le persone installano invece che un sito che visitano.