根据 iframe 中的点击导致的主页 URL 更改触发 GTM 事件

Triggering GTM Event Based on URL Change in Main Page Caused by Click Inside an Iframe

提问人:Fabian 提问时间:11/13/2023 更新时间:11/17/2023 访问量:106

问:

赏金将在 2 天后到期。这个问题的答案有资格获得 +50 声望赏金。Fabian 正在寻找来自信誉良好的来源的答案

我正在处理一个 Web 项目,在我的主页(托管在 cba123.com 上)中嵌入了一个 iframe。在此 iframe 中,有一些链接,单击这些链接时,会将主页的 URL 更改为其他站点(例如,abc567.com)。

我希望在 Google 跟踪代码管理器 (GTM) 中设置一个触发器来检测此特定场景:当用户单击 iframe 中的链接时,会导致主页 URL 更改。在 GTM 中为主页上的常规链接设置触发器很简单,但我不确定如何使用 iframe 处理这种特殊情况。

至关重要的是,此 iframe 来自不同的域,我无法修改其内容或代码。此外,主页和 iframe 内容之间没有“同源”关系。

有人能否提供有关如何为此方案设置 GTM 触发器的见解或指导?是否可以检测由 iframe 中的操作启动的主页上的 URL 更改?

任何建议或资源将不胜感激。

javascript html iframe google-tag-manager

评论

1赞 Keyboard Corporation 11/13/2023
我认为您需要 postMessage 的组合 - 在 iframe 和主页之间进行通信,并设置 GTM 触发器 - 当主页在此处收到特定消息时触发
0赞 jonhendrix 11/21/2023
如上所述,这里有一个全面的答案:measureschool.com/iframe-tracking 但它依赖于您拥有“开发人员对相关 iframe 的访问权限”。

答:

0赞 Qasim 11/20/2023 #1

经过一些研究,我发现您可以使用“MutationObserver”来监视 href 更改。我个人没有测试过。 下面是示例

document.addEventListener('DOMContentLoaded', function () {
    var observer = new MutationObserver(function (mutations) {
      mutations.forEach(function (mutation) {
        if (mutation.type === 'attributes' && mutation.attributeName === 'href') {
          dataLayer.push({
            event: 'iframeLinkClick',
            url: mutation.target.href
          });
        }
      });
    });
  
    var iframeLinks = document.querySelectorAll('iframe[src*="abc567.com"]');
  
    iframeLinks.forEach(function (link) {
      observer.observe(link, { attributes: true, attributeFilter: ['href'] });
    });
  });

评论

0赞 Fabian 11/22/2023
He Qasim,看起来很有前途,但请提供有关如何在 GTM 中测试此代码的简短分步说明。