Utilizzare AppMeasurement con gli iframe
Puoi fare riferimento alle variabili di AppMeasurement sia dagli iframe figlio che da quelli padre. È necessario definire tutte le variabili nella stessa posizione in cui esiste la libreria AppMeasurement. Gli esempi seguenti spiegano come impostare variabili e metodi di base di AppMeasurement all’interno e all’esterno di un iframe.
Se utilizzi i tag in Adobe Experience Platform, accertati che l’oggetto tracker sia accessibile a livello globale. Consulta Panoramica dell'estensione Adobe Analytics.
Accedere ad AppMeasurement che risiede in un iframe
Puoi accedere alle variabili di AppMeasurement tramite l’oggetto iframe. In questi esempi viene impostato pageName e viene chiamato il metodo t() utilizzando due modi diversi per fare riferimento all'oggetto iframe.
// Reference AppMeasurement code that resides within an iframe and send an image request
document.getElementById('targetFrame').contentWindow.s.pageName="Page name within iframe";
document.getElementById('targetFrame').contentWindow.s.t();
// An alternate method to the above if there's only one iframe on the page
window.frames[0].contentWindow.s.pageName = "Page name within iframe";
window.frames[0].contentWindow.s.t();
Accedere ad AppMeasurement dall’interno di un iframe
Puoi accedere alle variabili di AppMeasurement su una pagina padre da un iframe. Questo esempio imposta pageName e chiama il metodo t() utilizzando la proprietà parent.
// Reference AppMeasurement code on a parent page from within an iframe and send an image request
parent.s.pageName = "Page Name on Hosted Window";
parent.s.t();
Usa postMessage e listener di eventi
In alternativa, è possibile utilizzare postMessage e i listener di eventi per impostare le variabili. Questo metodo non richiede un riferimento diretto a un iframe.
// Place this code in your parent window
function listenMessage(e) {
if(e.data == "Example page view call") {
s.pageName = "Page name using postMessage";
s.t();
}
}
window.addEventListener("message", listenMessage, false);
// Place this code in the iframe
window.top.postMessage("Example page view call","https://example.com");
Limitazioni
- Come con altri codici JavaScript, gli iframe possono comunicare solo quando i domini e il protocollo corrispondono. Questi esempi non funzionano se il contenuto dell’iframe risiede in un dominio diverso da quello dell’elemento principale.
- Se AppMeasurement risiede in un iframe, la variabile
referrerviene impostata sull'URL padre, non sull'URL di riferimento effettivo. È possibile impostare manualmente la variabilereferrerper risolvere il problema. - Il debugger di Adobe Experience Cloud non riconosce le richieste di immagini attivate negli iframe.
- Activity Map non visualizza la mappa di calore sui collegamenti su cui è stato fatto clic all’interno degli iframe. Viene invece evidenziato l’intero iframe.