javascript - 仅在滚动百分比上发送一次 dataLayer

标签 javascript jquery google-tag-manager google-datalayer

我正在寻找有关 jQuery 的一些方向。可能有更好的方法来做到这一点,但基本上我试图在用户滚动到页面的 50% 时发送一个 dataLayer 变量,并在用户滚动到页面的 75% 时发送另一个变量。

$(window).on('scroll', function(){
  var s = $(window).scrollTop(),
  d = $(document).height(),
  c = $(window).height();

  var scrollPercent = (s / (d - c)) * 100;

  if (scrollPercent > 74 && scrollPercent < 76) {
  dataLayer.push({'Project Profile':'75% Scrolled'})
  };

  if (scrollPercent > 49 && scrollPercent < 51) {
  dataLayer.push({'Project Profile':'50% Scrolled'})
  };
})

因为数字可以是 74.23413424、74.3495490 等。它会在最小 74 到最大 76 之间触发大量次。

有更好的方法吗?有没有办法只发送一个dataLayer.push?我认为两者的答案都是肯定的。我就是不知道怎么办!预先感谢您的帮助。

布莱恩

最佳答案

  1. 您实际上只需要某种标记,一旦您达到 74%,该标记就会被标记。例如:

let flag1 = false;
let flag2 = false;
$(window).on('scroll', function(){
    var s = $(window).scrollTop(),
    d = $(document).height(),
    c = $(window).height();

    var scrollPercent = (s / (d - c)) * 100;

    if (scrollPercent > 74 && !flag1) {
        dataLayer.push({'Project Profile':'75% Scrolled'});
        flag1 = true;
    };

    if (scrollPercent > 49 && !flag2) {
        dataLayer.push({'Project Profile':'50% Scrolled'});
        flag2 = true;
    };
})

  • 实际上您并不需要 JQuery。 GTM 现在具有捕获滚动深度的内置触发器。您可以在 post 中阅读更多内容
  • 关于javascript - 仅在滚动百分比上发送一次 dataLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50025230/

    相关文章:

    Javascript 对象解构/操作

    javascript - 下拉菜单关闭掉 Angular 图标

    javascript - jQuery 选择器不起作用?

    javascript - 尽管执行了 DataLayer 推送,但 Google 跟踪代码管理器代码未触发

    jquery - 在Google Analytics(分析)中未跟踪引荐网址数据

    google-analytics - 为多环境设置集成 GTM 查找表的问题

    javascript - 如何检索内联验证函数触发的输入元素的 id?

    c# - 如何在 Javascript 中修改 HTML,然后在回发时读取 ASP.NET 中的更改?

    javascript - Bootstrap/JS 折叠延迟且无动画

    javascript - 将文本框值添加到警报