• GTM课程
  • 博客
  • 服务
  • 资源资源
    • YouTube频道
    • 电子书和指南
    • GTM食谱
    • 查看所有资源
    • GTM社区
  • 关于
    • 关于
    • 联系
  • GTM课程
  • 博客
  • 服务
  • 资源资源
    • YouTube频道
    • 电子书和指南
    • GTM食谱
    • 查看所有资源
    • GTM社区
  • 关于
    • 关于
    • 联系

2017年9月16日

使用Google跟踪代码管理器跟踪体彩七星彩开奖结果何时在屏幕上可见

几周前,我在GTM Google+社区中注意到一个问题,询问是否’可以跟踪屏幕上何时显示特定网站体彩七星彩开奖结果。提供了一些提示,但没有为像您(可能)和我这样的非开发人员提供现成的解决方案。所以今天’我将向您展示一个自定义监听器,该监听器将跟踪特定的网站体彩七星彩开奖结果(您’则必须对其进行配置)并在该体彩七星彩开奖结果/部分进入浏览器窗口视图时触发dataLayer.push事件。

免责声明:由于此博客完全面向非开发人员(我是其中之一),因此我不会’不能自己写这个听众。所以我问我的同事’JavaScript很棒,可以为我编写一个。我只是给他明确的指示:

  • 我必须能够配置 我要追踪哪个体彩七星彩开奖结果 与CSS选择器。
  • 我想跟踪何时一个体彩七星彩开奖结果 显示或 隐.
  • I 不要’不想发送我的Google Analytics(分析)报告。如果某个特定体彩七星彩开奖结果已经出现在浏览器窗口中,我不会’t want the 显示 事件再次触发。重新加载页面后, 显示 事件可以再次触发。
  • 我想通过一些 附加数据 with the Data Layer event after a particular element is 显示/hidden.
  • 此体彩七星彩开奖结果可见性 侦听器必须仅依靠滚动。如果屏幕上出现具有某些其他效果的特定体彩七星彩开奖结果(例如轮播),则该体彩七星彩开奖结果会赢得’t be tracked.
  • 最后, 我给开发人员提供了一个示例dataLayer.push事件代码片段 我要他开除
    window.dataLayer = window.dataLayer || [];
         window.dataLayer.push({
           'event': 'elementVisilibity', // the value is always the same
           'visibilityStatus': 'shown', //  possible values: 'shown' or 'hidden'
           'elementAttribute': 'attributeValue' // some unique value

要求

请记住,此跟踪方法必须满足一些要求。

  • 自动事件侦听器在很大程度上依赖于滚动。当访问者向下滚动并开始看到特定的网站体彩七星彩开奖结果时,将触发dataLayer.push事件。
  • 所需的网站体彩七星彩开奖结果必须是静态的。如果你’重新计划跟踪移动的旋转木马,并想在屏幕上出现第二张幻灯片时触发事件,因此该博客文章赢得了’不能帮助你。其实我没有’没有测试过这种自定义情况,但是我’m guessing it won’t work.

换句话说,当访问者向下滚动到特定网站体彩七星彩开奖结果(始终在某个位置)并且该体彩七星彩开奖结果进入浏览器窗口视图时,将调度数据层事件。我们’将使用该事件作为触发来触发Universal Analytics代码。

请记住,此听众还有机会获胜’无法在某些网站上使用,因为它们使用不同的技术来加载网站体彩七星彩开奖结果。而且,如果一个页面包含很多精美的动画来加载各个网站板块,那么这种技术肯定会胜出’没用(但是您仍然可以尝试运气)。

 

自动事件侦听器的配置

就像每个自定义跟踪解决方案一样,此解决方案从侦听器开始。它’一个JavaScript代码段,可不断查找特定体彩七星彩开奖结果以及它们何时出现在屏幕上。如果你’如果您不是开发人员,请先跳过大约110行代码。重要的部分(对您而言)从第112行开始。

 

 

<script>
 (function(w, d, ns) {
  var _ns = "_" + ns;

  w[_ns] = w[_ns] || {
   elements: [],
   addElements: function(selector, onShow, onHide) {
     var elements = d.querySelectorAll(selector);

     for (var i = 0; i < elements.length; i++) {
      w[_ns].elements.push({
        element: elements[i],
        onShow: onShow,
        onHide: onHide,
        wasShown: false,
        wasHidden: false
       });
      }

      w[_ns].checkElements();
     },
     checkElements: function() {
      for (var i = 0; i < w[_ns].elements.length; i++) {
       var rect = { top: 0, left: 0 },
         isVisible = false;

         if (typeof w[_ns].elements[i].element.getBoundingClientRect === "function") {
         rect = w[_ns].elements[i].element.getBoundingClientRect();
      }

      if (rect.top + w[_ns].getWindowOffset() > w[_ns].getWindowOffset()) {
       if (rect.top + w[_ns].getWindowOffset() < w[_ns].getWindowOffset() + w[_ns].getWindowHeight()) {
        isVisible = true;
       }
      }

      if (rect.top + w[_ns].getWindowOffset() + w[_ns].elements[i].element.offsetHeight > w[_ns].getWindowOffset()) {
       if (rect.top + w[_ns].getWindowOffset() + w[_ns].elements[i].element.offsetHeight < w[_ns].getWindowOffset() + w[_ns].getWindowHeight()) {
        isVisible = true;
       }
      }

      if (isVisible) {
       if (!w[_ns].elements[i].wasShown) {
         w[_ns].elements[i].wasShown = true;

          if (typeof w[_ns].elements[i].onShow === "function") {
           w[_ns].elements[i].onShow(w[_ns].elements[i].element);
            }
           } 
          } else {
           if (w[_ns].elements[i].wasShown) {
            if (!w[_ns].elements[i].wasHidden) {
             w[_ns].elements[i].wasHidden = true;

              if (typeof w[_ns].elements[i].onHide === "function") {
               w[_ns].elements[i].onHide(w[_ns].elements[i].element);
              }
             }
            }
           }
          }
         },
         getWindowOffset: function() {
          return (w.pageYOffset || d.documentElement.scrollTop) - (d.documentElement.clientTop || 0);
         },
         getWindowHeight: function() {
          return w.innerHeight || d.documentElement.clientHeight || d.body.clientHeight;
         },
         bindWindow: function() {
          if (typeof w[_ns].onWindowResize !== "function" || typeof w[_ns].onWindowScroll !== "function") {
           w[_ns].onWindowResize = function() {
            w[_ns].checkElements();
           };

         w.attachEvent ? w.attachEvent("onresize", w[_ns].onWindowResize) : w.addEventListener("resize", w[_ns].onWindowResize, false);
          w[_ns].onWindowScroll = function() {
           w[_ns].checkElements();
          };

         w.attachEvent ? w.attachEvent("onscroll", w[_ns].onWindowScroll) : w.addEventListener("scroll", w[_ns].onWindowScroll, false);
         }
        }
       };

         w[ns] = w[ns] || function(selector, onShow, onHide) {
          if (d.readyState === "complete") {
           w[_ns].bindWindow();
            w[_ns].addElements(selector, onShow, onHide);
          } else if (d.attachEvent) {
            d.attachEvent("onreadystatechange", function() {
             if (d.readyState === "complete") {
              w[_ns].bindWindow();
               setTimeout(function() {
                w[_ns].addElements(selector, onShow, onHide);
               }, 500);
              }
             });
            } else {
             d.addEventListener("readystatechange", function() {
              if (d.readyState === "complete") {
               w[_ns].bindWindow();
                setTimeout(function() {
                 w[_ns].addElements(selector, onShow, onHide);
                }, 500);
               }
              });
             }
            };
           })(window, document, "watchElements");

   watchElements("ENTER_YOUR_CSS_SELECTOR_HERE", function(element) { //change the CSS Selector
     window.dataLayer = window.dataLayer || [];
     window.dataLayer.push({
       'event': 'elementVisibility',
       'visibilityStatus': 'shown',
       'elementAttribute': element.getAttribute("ENTER_ATTRIBUTE_HERE") //change the attribute (optional)
     });
   }, function(element) {
     window.dataLayer = window.dataLayer || [];
     window.dataLayer.push({
       'event': 'elementVisibility',
       'visibilityStatus': 'hidden',
       'elementAttribute': element.getAttribute("ENTER_ATTRIBUTE_HERE") //change the attribute (optional)
     });
 });
 </script>

让’仔细看看。整个脚本(第1行)–110)将仅查找特定体彩七星彩开奖结果,因此我们需要对其进行精确配置。在第112行,而不是 enter_here_your_CSS_selector,你’必须输入一个CSS选择器。简而言之,CSS选择器是一种模式,用于在页面上查找特定的一个或多个体彩七星彩开奖结果。

例如,您要跟踪ID为 thisAwesomeButton,Â您的CSS选择器将是 #thisAwesomeButton.

如果您想跟踪具有 图片放大 CSS类,是ID为的代码块的后代 非常重要的部分。在这种情况下,CSS选择器将是 div#veryImportantSection img.image-large。

是的,我知道这对非开发人员来说是高级的,但是请相信我:我与Google跟踪代码管理器的合作越多,就越利用CSS选择器。

Simo Ahava发布了非常有用的指南(Link 1和Link 2)教授如何在GTM中使用CSS选择器。每当出现与CSS-Selector有关的问题时,我总是打开这些指南之一。

无论如何,回到体彩七星彩开奖结果可见性监听器的配置。首先,您需要编辑 enter_here_your_CSS_selector。如果屏幕上出现特定体彩七星彩开奖结果(符合CSS选择器),则数据层事件 elementVisibility 将分派两个附加参数:

  • visibleStatus状态。可能的值: 显示 和 隐. 每个状态只能出现一次(一个网站体彩七星彩开奖结果),这意味着如果体彩七星彩开奖结果(1)出现了,那么(2)隐藏了,然后又出现了(3),则只会触发两个数据层事件,一个“shown” 和 one “hidden”。但是,如果跟踪了两个体彩七星彩开奖结果,则每个体彩七星彩开奖结果可以有两个事件:“shown” 和 “hidden”对于第一个体彩七星彩开奖结果,“shown” 和 “hidden” for the 2nd. 如果重新加载页面,则会重置这些规则。
  • elementAttribute。它是一个可选的但有用的参数,可帮助您区分看到了哪个体彩七星彩开奖结果。但是需要另外配置。

一个简单的例子。假设您要跟踪同时满足两个条件的所有图像的外观:

  • CSS类等于 。图片
  • 图片必须是ID为ID的块的后代 非常重要的部分。

因此,CSS选择器将是 div#veryImportantSectionÂimg.image-large.

总共在一个页面上有5张图像。如果访客滚动到页面的最底部,则他’会看到全部五个。这意味着5个相同的数据层事件,但是您’想要在Google Analytics(分析)报告中以某种方式区分它们,对吗?

幸运的是,在我们的案例中,每个图像都有一个 alt attribute with a unique value. 这里’s an example:

图像alt属性

Alt 参数’s value is Bigcommerce。 让’s把它变成变量 elementVisibility 数据层事件,可以吗?其实呢’非常简单,只需替换 enter_attribute_here 与 alt.

这里’s配置的代码段应该是什么样子(我们’ve编辑了第1、6和13行):

   watchElements("div#veryImportantSection img.image-large", function(element) {
        window.dataLayer = window.dataLayer || [];
        window.dataLayer.push({
            'event': 'elementVisibility',
            'visibilityStatus': 'shown',
            'elementAttribute': element.getAttribute("alt")
     });
   }, function(element) {
         window.dataLayer = window.dataLayer || [];
         window.dataLayer.push({
             'event': 'elementVisibility',
             'visibilityStatus': 'hidden',
             'elementAttribute': element.getAttribute("alt")

保存自定义HTML标记并对其进行测试。

 

让’s test

启用 GTM预览和调试模式,刷新页面我们’重新进行操作并向下滚动,直到看到我们希望跟踪的第一张图像。如果一切都配置正确,则以下事件应出现在预览和调试控制台中:

elementVisibility数据层事件

活动名称为 elementVisibility,visibilityStatus为 显示,elementAttribute为 Bigcommerce。 如果您进一步向下滚动,则图像将从窗口中消失,并且将调度另一个Data Layer事件,其可见性为StatusStatus = 隐.

 

触发器和变量

正如我在多个博客文章中已经提到的那样,默认情况下,Google跟踪代码管理器无法识别自定义事件和数据层变量。因此,如果您想使用事件作为触发器或将数据传递给Google Analytics(分析),’将需要创建一个触发器和数据层变量。

首先,让’创建两个数据层变量:

visibleStatus和elementAttribute变量

 

然后,我们应该创建一个触发器并将其设置为在所有 elementVisibility 事件(包括两者 显示 和 隐 事件)。

自定义触发器-体彩七星彩开奖结果可见性另外,我们可以将触发器设置为仅在 显示 (要么 隐)事件。

element visibility equals 显示

 

通用Analytics(分析)标签

最后,让’将数据发送到Google Analytics(分析)。使用以下设置创建标签:

体彩七星彩开奖结果可见性Google Analytics(分析)标签

尝试提出一些有意义的标题(而不是 非常重要的形象)。这个’只是一个示例ðŸ™,’re not sure what Google Analytics(分析)变量 是的 阅读本教程.

和唐’别忘了用Google Analytics(分析)实时报告测试此实现。

Google Analytics(分析)实时报告

 

如何在屏幕上使用GTM跟踪iF体彩七星彩开奖结果:结论

但是,另一本GTM教程已经结束。在这个,我’ve解释了如何跟踪特定体彩七星彩开奖结果在屏幕上是否可见。您需要做的是:

  • 使用“体彩七星彩开奖结果可见性”侦听器创建一个自定义HTML标签。
  • 使用CSS选择器进行配置(遵循Simo’s tutorials 和 you’ll succeed).
  • (可选)您可以获取element的值’的属性,并将其转换为变量,然后可以将其进一步传递给Google Analytics(分析)。

请记住,在某些网站中,体彩七星彩开奖结果的加载方式可能有所不同,因此’这个Element Visibility监听器有机会赢得’工作。无论如何,我建议您尝试一下,也许您’ll find it useful.

朱利叶斯·费多罗维奇乌斯
在 Google跟踪代码管理器提示
5评论
萨图
  • 2018年2月22日
  • 回复

谢谢。 I tried this to track the success message 显示 after the newsletter subscription. It worked for some pages especially start with '/contact' page, but
它不适用于网站的大多数页面。
这是什么问题?这是网站的问题吗?

    朱利叶斯·美联储
    • 2018年2月22日
    • 回复

    嗨,该体彩七星彩开奖结果在所有页面上都一样吗?

    Anyway, Google's team have released a more robust solution how to track appearance of elements. You should try it - it's called Element Visibility Trigger. You could try it - //www.simoahava.com/analytics/element-visibility-trigger-google-tag-manager/

      萨图
      • 2018年2月23日
      • 回复

      如果订阅者成功订阅了新闻通讯,它将在所有页面上显示为成功消息。在所有页面中,我们可以使用相同的CSS选择器识别它。
      无论如何,谢谢您的帮助。我将尝试扳机。非常感谢。

        萨图
        • 2018年2月23日
        • 回复

        它正在使用“体彩七星彩开奖结果可见性触发器”。 :-)
        谢谢。

          朱利叶斯·美联储
          • 2018年2月25日

          别客气!

发表评论 取消回复

您的电子邮件地址不会被公开。 必需的地方已做标记 *

 

嗨,我是Julius Fedorovicius和I'm here to help you learn Google Tag Manager 和 GA (but mostly GTM). Join other 100 000+ monthly visits 和 14000+ newsletter subscribers in this exciting journey. 阅读更多
基本资源


热门文章
  • 🔥GTM表格跟踪:7种有效方法
  • 🔥dataLayer.push:指南
  • 🔥GTM vs Google Analytics(分析)
  • 🔥99使用GTM可以做的事情
  • 🔥GTM常见错误
  • 🔥数据层:终极指南
  • 𥔥60 +适用于GTM的自定义JavaScript
分析狂热
  • Google跟踪代码管理器课程
  • Google跟踪代码管理器食谱
  • Google跟踪代码管理器资源
  • Google跟踪代码管理器社区
  • 登录课程
关注Analytics Mania
  • 订阅新闻通讯
  • RSS订阅
最近的帖子
  • Google Analytics(分析)4中的增强测量:指南
  • 使用Google跟踪代码管理器跟踪联系表7
  • 在GTM中缺少DOM准备就绪和窗口加载事件?
分析狂热- Google Tag Manager 和 Google Analytics 博客 | 隐私政策
管理Cookie设置
    1. <a class="x9dw9Yt"><dir class="jfzsQkO"></dir></a>

    2. <time class="Y6orx4J"></time>

      <audio class="gGM5P5d"><q id="FlVYtWn"><address id="uyVrTjZ" class="uqYKg0j"></address></q></audio>
        <span id="NIbrysr"><noscript id="BR5jqol"></noscript></span>



          • <map id="syHko9O" class="smfwYqG"></map>
            <tfoot id="tBpnu4q" class="t5xt4Oe"><progress id="b0cGkyf" class="bfMtizO"><i id="pO70cIM" class="pWdU5qL"></i></progress></tfoot>