Uso de AppMeasurement con iFrames

Puede hacer referencia a variables de AppMeasurement desde iFrames secundarios y principales. Es necesario definir todas las variables en la misma ubicación donde existe la biblioteca AppMeasurement. En los siguientes ejemplos se explica cómo configurar variables y métodos básicos de AppMeasurement dentro y fuera de un iframe.

Si utiliza Adobe Experience Platform Launch, asegúrese de que el objeto de seguimiento es accesible globalmente. Consulte Descripción general de la extensión de Adobe Analytics en la guía del usuario de Launch.

ATENCIÓN

Evite incluir bibliotecas de AppMeasurement tanto en una página principal como en un iframe. Al hacerlo, se corre el riesgo de enviar varias solicitudes de imagen, inflar informes y aumentar las llamadas facturables al servidor.

Acceso a AppMeasurement que reside en un iframe

Puede acceder a las variables de AppMeasurement a través del objeto iframe. En estos ejemplos se establece pageName y se llama al método t() de dos formas diferentes de hacer referencia al objeto 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();

Acceso a AppMeasurement desde dentro de un iframe

Puede acceder a las variables de AppMeasurement en una página principal desde un iframe. En este ejemplo se establece pageName y se llama al método t() mediante la propiedad 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();

Uso de postMessage y detectores de eventos

Como alternativa, puede utilizar postMessage y detectores de eventos para establecer variables. Este método no requiere una referencia directa 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");

Limitaciones

  • Al igual que con otros códigos JavaScript, los iFrames solo pueden comunicarse cuando los dominios y el protocolo coinciden. Estos ejemplos no funcionan si el contenido del iframe reside en un dominio diferente al dominio principal.
  • Si AppMeasurement reside en un iframe, la variable referrer se establece en la dirección URL principal, no en la dirección URL de referencia real. Puede configurar manualmente la variable referrer para resolver este problema.
  • El depurador de Adobe Experience Cloud no reconoce solicitudes de imagen activadas dentro de iFrames.
  • Activity Map no muestra el mapa de calor sobre los vínculos en los que se hace clic dentro de los iFrames. Todo el iframe se resalta en su lugar.

En esta página