将Google代码管理器

时间:2017-07-17 18:18:05

标签: google-tag-manager

<script id="gtm-hover-listener">
  (function(document, window) {

    var qs = '{{Constant - Hover Listener CSS Selectors}}'.split(',');
    var addEvent = {{fn.addEvent}};
    var removeEvent = {{fn.removeEvent}};
    var i;

    for (i = 0; i < qs.length; i++) {

      var els;

      try {

        els = document.querySelectorAll(qs[i]);

      } catch(e) { 

        // If we're in Debug Mode, warn the tester
        if ({{Debug Mode}}) {

          throw 'DOMException: GTM Hover Listener - Invalid Query Selector in variable Constant - Hover Listener CSS Selectors; ' + e.message;

        }

      }
      var k;

      for (k = 0; k < els.length; k++) {

        var el = els[k];
        addEvent(el, 'scroll', bind_);

      }

    }

    function bind_(evt) {
      
      var el = evt.target;
        containerHeight = $('.coverage-content').height();
        mathHeight = containerHeight/95;
        scrollDistance = $('.coverage-content').scrollTop();
        console.log (scrollDistance)
        if (scrollDistance > mathHeight){

      // Fire our push as long as they don't leave in less than half a second
    
        dataLayer.push({
          event: "scroll",
          attributes: {
            element: el
          }
        });

      }
    }


  })(document, window);
</script>
<ul class="coverage-content"><li class="n pname">AARP MedicareRx Preferred</li><li class="p"><img src="../assets/img/check.jpg"></li><li class="r"></li><hr><li class="n pname">AARP MedicareRx Saver Plus</li><li class="p"><img src="../assets/img/check.jpg"></li><li class="r"></li><hr><li class="n pname">Aetna Commercial Fully Insured HMO 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Fully Insured HMO 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Fully Insured HMO 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Fully Insured POS 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Fully Insured POS 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Fully Insured POS 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Fully Insured PPO 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Fully Insured PPO 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Fully Insured PPO 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured HMO 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured HMO 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured HMO 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured POS 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured POS 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured POS 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured PPO 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured PPO 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Commercial Self Insured PPO 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna FEHBP HealthFund (CDHP/HDHP)</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna FEHBP Open Access Arizona</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Medicare Rx Saver </li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Fully Insured HMO 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Fully Insured HMO 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Fully Insured HMO 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Fully Insured POS 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Fully Insured POS 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Fully Insured POS 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Fully Insured PPO 3 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Fully Insured PPO 4 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Fully Insured PPO 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured HMO 3 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured HMO 4 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured HMO 5 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured POS 3 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured POS 4 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured POS 5 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured PPO 3 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured PPO 4 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Fully Insured PPO 5 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured HMO 3 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured HMO 4 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured HMO 5 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured POS 3 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured POS 4 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured POS 5 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured PPO 3 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured PPO 4 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Premier Plus Self Insured PPO 5 Tier</li><li class="p"></li><li class="r"></li><hr><li class="n pname">Aetna Value Plus HMO 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Value Plus POS 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr><li class="n pname">Aetna Value Plus PPO 5 Tier</li><li class="p"></li><li class="r"><img src="../assets/img/check.jpg"></li><hr></ul>

我正在使用Google跟踪代码管理器,并将滚动事件监听器应用于滚动部分。截面高度将根据下拉菜单中选择的选项而有所不同。我想计算用户滚动超过5%的时间。

在某些情况下,下拉菜单不会生成可滚动窗口。在这种情况下,我需要返回一个说明这样的声明。

以下是我正在使用的当前代码。

<script id="gtm-hover-listener">
  (function(document, window) {

    var qs = '{{Constant - Hover Listener CSS Selectors}}'.split(',');
    var addEvent = {{fn.addEvent}};
    var removeEvent = {{fn.removeEvent}};
    var i;

    for (i = 0; i < qs.length; i++) {

      var els;

      try {

        els = document.querySelectorAll(qs[i]);

      } catch(e) { 

        // If we're in Debug Mode, warn the tester
        if ({{Debug Mode}}) {

          throw 'DOMException: GTM Hover Listener - Invalid Query Selector in variable Constant - Hover Listener CSS Selectors; ' + e.message;

        }

      }
      var k;

      for (k = 0; k < els.length; k++) {

        var el = els[k];
        addEvent(el, 'scroll', bind_);

      }

    }

    function bind_(evt) {
      
      var el = evt.target;
        containerHeight = $('.coverage-content').height();
        mathHeight = containerHeight/95;
        scrollDistance = $('.coverage-content').scrollTop();
        console.log (scrollDistance)
        if (scrollDistance > mathHeight){

      // Fire our push as long as they don't leave in less than half a second
    
        dataLayer.push({
          event: "scroll",
          attributes: {
            element: el
          }
        });

      }
    }


  })(document, window);
</script>

1 个答案:

答案 0 :(得分:0)

根据你的目标,你的JS应该是这样的:

<script>
    $(document).ready(function(){

        if ($('.coverage-content')[0].scrollHeight<$('.coverage-content').height()) {
            //datalayer send no scroll
        }
        else {
            $('.coverage-content').scroll(function() { 
                var $this = $(this);
                var state = $('#state-selector').val();
                var firstLetter = $('#first-letter').val();
                var firstLetter = $('#plan-type').val();
                if ($this.attr('datalayer-sent') == undefined)
                {

                    var moreThan5 = this.scrollTop > this.scrollHeight/100*5;
                    if (moreThan5)
                    {           
                        //datalayer send scrolled more than 5%
                        $this.attr('datalayer-sent','true');
                    }
                }
            });
        }

        $('#state-selector, #first-letter, #plan-type').change(function(){
            $('.coverage-content').removeAttr('datalayer-sent');
            if ($('.coverage-content')[0].scrollHeight<$('.coverage-content').height()) {
                //datalayer send no scroll
            }
        })
    })
</script>

我在这个JS中放置了你需要添加代码的注释,以便推送到datalayer。

此脚本将执行的操作:

如果滚动次数超过5%,它将发送一次datalayer。然后,如果您向上滚动然后向下滚动,它将不会发送。但是,如果您要更改过滤器(状态,字母或计划)然后滚动,它将再次发送。

此外,它将检查是否没有滚动,它将发送没有滚动消息的数据层。