将AppMeasurement与iframe结合使用

您可以从子和父参数引用AppMeasurement变量。 必须在AppMeasurement库所在的位置定义所有变量。 以下示例说明如何在iframe内外设置基本的AppMeasurement变量和方法。

如果使用Adobe Experience Platform Launch,请确保跟踪器对象可全局访问。 请参 阅启动用户指 南中的Adobe Analytics扩展概述。

!![CAUTION]
避免在父页面和iframe上都包含AppMeasurement库。 这样做会给发送多个图像请求、增加报告和增加可计费服务器调用带来风险。

访问驻留在iframe中的AppMeasurement

您可以通过iframe对象访问AppMeasurement变量。 这些示例 设置 pageName ,并使用两种不 同的方法调用t()方法来引用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();

从iframe中访问AppMeasurement

您可以从iframe中访问父页面上的AppMeasurement变量。 此示例 设置pageName ,并使 用属性调用 t() 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();

使用 postMessage 和事件监听器

或者,也可以使用 postMessage 和事件监听器设置变量。 此方法不需要对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");

限制

  • 与其他JavaScript代码一样,iframe只能在域和协议匹配时进行通信。 如果iframe内容位于父级以外的其他域上,则这些示例将不起作用。
  • 如果AppMeasurement驻留在iframe中,则变 referrer 量将设置为父URL,而不是实际的引用URL。 您可以手动设置 referrer 变量以解决此问题。
  • Adobe Experience Cloud 调试器 不识别在iframe内触发的图像请求。
  • Activity Map不会在单击的信息中的链接上显示热图。 而是高亮显示整个iframe。

在此页面上