Guida all’integrazione di Prehide SDK
Una piccola libreria sincrona JavaScript che impedisce lo sfarfallio visivo causato dalla personalizzazione Adobe Target che riscrive un rendering intermedio della pagina. Aggiungi un tag <script> in linea nella parte superiore di <head> e la pagina viene visualizzata solo dopo che il contenuto personalizzato è pronto o il timer di sicurezza si attiva.
Passaggi dell’integrazione integration-steps
-
Scarica il bundle.
Utilizzare l’interfaccia utente di Gestione sfarfallio per scaricare
prehide.min.js. Il file è preconfigurato con il codice client e il timeout di protezione, quindi non è necessario alcun bloccoPrehideConfig. -
Incorporalo in linea nella parte superiore di
<head>.Incolla il contenuto di
prehide.min.jsdirettamente all’interno di un tag<script>in linea come primo elemento figlio di<head>. Vedi In linea rispetto a esterno per informazioni sul motivo per cui è preferibile utilizzare la modalità in linea.code language-html <!-- 1. Prehide SDK: must be FIRST in <head> and BEFORE any Adobe SDK --> <script> // paste the contents of prehide.min.js here </script> <!-- 2. Then load Alloy.js OR at.js --> <script src="https://your-cdn/alloy.min.js"></script> -
(Facoltativo) Aggiungi un blocco di configurazione runtime.
Obbligatorio solo se ospiti autonomamente il bundle senza scaricare tramite l’interfaccia utente o se devi ignorare la scelta di SDK. Posiziona il blocco di configurazione prima dello script prehide:
code language-html <script> window.PrehideConfig = { sdk: "alloy" // or "atjs" (defaults to "alloy") }; </script> <script> /* prehide.min.js inline contents */ </script> <script src="https://your-cdn/alloy.min.js"></script> -
(Facoltativo) Consenso per la revoca del consenso.
Se l’implementazione utilizza una piattaforma di gestione del consenso (CMP, Consent Management Platform), chiama
window.Prehide.setConsent(...)non appena è noto lo stato del consenso. Consulta Gestione del consenso. -
Verifica.
Apri DevTools e conferma che
<style id="alloy-prehiding">(oat-body-styleper at.js) sia visualizzato in<head>sul primo disegno e venga rimosso al termine del SDK. Eseguirewindow.Prehide.getState()nella console per verificare lo stato del runtime.
Dove posizionare lo script script-placement
Non aggiungere
async o defer al tag di script Prehide SDK. È necessaria l’esecuzione sincrona in modo che la regola di nasconderlo venga inserita prima che il browser inizi a disporre la pagina.Il SDK di previsualizzazione deve essere visualizzato prima nel documento rispetto al SDK Adobe Target che si ripulisce dopo. L’ordine di caricamento non è negoziabile:
<!doctype html>
<html>
<head>
<!-- ① Prehide SDK FIRST. Inline. Synchronous. No async/defer. -->
<script> /* prehide.min.js inline contents */ </script>
<!-- ② Alloy or at.js loads next -->
<script src="https://cdn.alloy.adobe.com/alloy.min.js"></script>
<!-- ③ Then everything else: meta, css, third-party tags, ... -->
<link rel="stylesheet" href="main.css">
</head>
<body> ... your page ... </body>
</html>
Inline ed esterno inline-vs-external
Esistono due modi per includere prehide.min.js:
<script>/* full contents of prehide.min.js pasted directly into the page */</script><script src="/static/prehide.min.js"></script>Perché è preferibile utilizzare la modalità in linea
<script>...</script> nel modello HTML. Consideralo come un blocco CSS critico: piccolo, in linea e sempre al vertice.- Nessun recupero con blocco del rendering. Lo scopo di Prehide SDK consiste nell’inserire le regole nascoste prima del primo rendering. Un
<script src>esterno aggiunge un round trip di rete esattamente in quella finestra critica. - Nessuna nuova modalità di errore. Un file esterno può essere 404, andare in timeout o essere bloccato da un ad-blocker. Impossibile eseguire una copia in linea.
- Il bundle è piccolo (~6 KB). L’inline costa meno di un tipico favicon, e nessun vantaggio di caching è abbastanza grande da superare il round-trip supplementare al primo rendering.
- Compatibile con la cache. Quando è allineato nella risposta di HTML, il SDK viene memorizzato nella cache insieme al resto del documento dal livello di caching esistente (CDN o cache HTTP del browser).
- Pacchetto specifico per il cliente. Il codice client del file scaricato viene inserito automaticamente al momento del download. L’allineamento garantisce che ogni visitatore riceva il bundle personalizzato corretto senza una richiesta aggiuntiva.
Configurazione configuration
SDK accetta la configurazione da due origini, in ordine di priorità. Viene letto quello disponibile per primo.
Runtime window.PrehideConfig (integrazione manuale)
Per i bundle self-hosted o non modificati, dichiarate un oggetto config prima dell’esecuzione dello script prehide:
<script>
window.PrehideConfig = {
sdk: "alloy" // optional: "alloy" (default) or "atjs"
};
</script>
sdk"alloy""atjs"Selezione SDK sdk-selection
Adobe Target offre due SDK di consegna: Alloy (il moderno Web SDK) e at.js (la libreria classica). Ogni cerca un diverso <style> elemento id al termine della personalizzazione e lo rimuove per visualizzare la pagina. Prehide SDK deve inserire id corrispondente. In caso contrario, la pagina rimane nascosta fino all’attivazione del timer di sicurezza.
sdk"alloy" (predefinito)<style id="alloy-prehiding">"atjs"<style id="at-body-style">Come impostarlo
<!-- For at.js -->
<script>
window.PrehideConfig = { sdk: "atjs" };
</script>
<script> /* prehide.min.js inline */ </script>
<script src="https://cdn.adobe.com/.../at.js"></script>
sdk: "alloy" durante il caricamento di at.js (o viceversa) indica che SDK non troverà l'elemento di pre-hide da rimuovere. Il timer di guardia alla fine rivelerà la pagina, ma i visitatori sperimenteranno una finestra nascosta più lunga. Imposta sempre sdk in modo che corrisponda alla libreria da caricare.I valori sconosciuti o mancanti tornano a "alloy", pertanto le integrazioni di Alloy esistenti continuano a funzionare senza alcuna modifica alla configurazione.
Gestione del consenso consent-management
- Il valore del consenso non viene mai archiviato in
window. Solo la funzione è esposta; lo stato interno rimane privato per SDK. - Le transizioni da
"out"a"in"non nascondono nuovamente la pagina, in quanto nascondere nuovamente il contenuto con rendering completo potrebbe causare interruzioni visive. setConsentpuò essere chiamato più volte all'interno di una singola pagina. Ogni chiamata sostituisce lo stato precedente.
Prehide SDK include un’API in grado di riconoscere il consenso per il coordinamento con la tua CMP. L’utilizzo di è facoltativo. Se setConsent non viene mai chiamato, SDK si comporta come un’integrazione standard senza consenso.
Superficie API
// Single function call. Pass a status string.
window.Prehide.setConsent("pending"); // banner shown, awaiting decision
window.Prehide.setConsent("in"); // user accepted personalization
window.Prehide.setConsent("out"); // user declined personalization
// Read-only debug snapshot.
window.Prehide.getState();
// → { sdk, version, consentStatus, consentApiUsed,
// rulesResolved, hasSelectorsToGuard, guardTimeout }
Funzionamento di ogni stato
setConsent("pending")setConsent("in")setConsent("out")init() per la durata configurata.Schema consigliato: fase in sospeso esplicita
-
Non appena la tua CMP visualizza l’interfaccia utente di consenso, chiama
setConsent("pending"). Questo cancella il timer di sicurezza in modo che la pagina rimanga nascosta mentre il visitatore sta decidendo, impedendo un lampo di contenuti non personalizzati dietro il banner.code language-js window.Prehide.setConsent("pending"); -
Quando il visitatore accetta la personalizzazione, chiama
setConsent("in"). Il timer di sicurezza si riavvia e Alloy/at.js subentra, rivelando la pagina una volta applicata la personalizzazione.code language-js window.Prehide.setConsent("in"); -
Quando il visitatore rifiuta la personalizzazione, chiama
setConsent("out"). La pagina viene visualizzata immediatamente e rimane visibile. Le regole CDN che si risolvono in un secondo momento non la nasconderanno di nuovo.code language-js window.Prehide.setConsent("out");
Esempio: integrazione in stile OneTrust
// Called once OneTrust has rendered its banner.
function onOneTrustReady() {
// Pause the guard timer while the banner is visible.
window.Prehide.setConsent("pending");
OneTrust.OnConsentChanged(function (event) {
if (event.consentedToTargeting) {
window.Prehide.setConsent("in");
} else {
window.Prehide.setConsent("out");
}
});
}
Esempio: TCF / stile IAB
// Optional: pause the guard while UI is up.
window.Prehide.setConsent("pending");
// Your CMP eventually emits the final TC string.
function onTcData(tcData) {
const hasTargetConsent = /* derive from tcData */;
window.Prehide.setConsent(hasTargetConsent ? "in" : "out");
}