Usar o AppMeasurement com iFrames

Você pode fazer referência às variáveis do AppMeasurement de iFrames filhos e pais. É necessário definir todas as variáveis no mesmo local em que a biblioteca do AppMeasurement existe. Os exemplos a seguir explicam como definir variáveis e métodos básicos do AppMeasurement dentro e fora de um iframe.

Se você usar tags no Adobe Experience Platform, verifique se o objeto do rastreador está acessível globalmente. Consulte Visão geral da extensão do Adobe Analytics.

ATENÇÃO

Evite incluir bibliotecas do AppMeasurement em uma página principal e em um iframe. Isso apresenta riscos ao envio de várias solicitações de imagem, inflando relatórios e aumentando chamadas de servidor faturáveis.

Acessar o AppMeasurement localizado em um iframe

Você pode acessar variáveis do AppMeasurement por meio do objeto iframe. Esses exemplos definem pageName e chamam o método t() usando duas maneiras diferentes para fazer referência ao objeto do 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();

Acessar o AppMeasurement de dentro de um iframe

Você pode acessar variáveis do AppMeasurement em uma página principal por meio de um iframe. Este exemplo define pageName e chama o método t() usando a propriedade 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();

Usar postMessage e ouvintes de eventos

Como alternativa, você pode usar postMessage e ouvintes de eventos para definir variáveis. Este método não exige uma referência direta a um 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");

Limitações

  • Assim como em outro código JavaScript, os iFrames só podem se comunicar quando os domínios e o protocolo são correspondentes. Esses exemplos não funcionam se o conteúdo do iframe estiver em um domínio diferente do principal.
  • Se o AppMeasurement estiver em um iframe, a variável referrer será definida como o URL principal, não como o URL de referência real. Você pode definir manualmente a variável referrer para resolver esse problema.
  • O Adobe Experience Cloud Debugger não reconhece solicitações de imagem acionadas em iFrames.
  • O Activity Map não exibe o mapa de calor em links clicados em iFrames. Em vez disso, o iframe inteiro é realçado.

Nesta página