在滚动百分比上只发送一次数据层
Only Send dataLayer once on Scroll Percentage
我正在寻找 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?我假设两者的答案都是肯定的。我只是不知道怎么办!在此先感谢您的帮助。
布莱恩
也许尝试检测它何时进入该范围并在它离开该范围时触发。
var inRange = false;
var inRange2 = false;
$(window).on('scroll', function(){
var s = $(window).scrollTop(),
d = $(document).height(),
c = $(window).height();
var scrollPercent = Math.round((s / (d - c)) * 100);
if (scrollPercent > 74 && scrollPercent < 76 && !inRange) {
inRange = true;
};
if (scrollPercent < 75 && scrollPercent > 75 && inRange) {
inRange = false;
dataLayer.push({'Project Profile':'75% Scrolled'});
};
if (scrollPercent > 49 && scrollPercent < 51 && !inRange2) {
inRange2 = true;
};
if (scrollPercent > 50 && scrollPercent < 50 && inRange2) {
inRange2 = false;
dataLayer.push({'Project Profile':'50% Scrolled'});
};
})
- 你真的只需要某种标志,一旦你达到 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
中阅读更多内容
我正在寻找 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?我假设两者的答案都是肯定的。我只是不知道怎么办!在此先感谢您的帮助。
布莱恩
也许尝试检测它何时进入该范围并在它离开该范围时触发。
var inRange = false;
var inRange2 = false;
$(window).on('scroll', function(){
var s = $(window).scrollTop(),
d = $(document).height(),
c = $(window).height();
var scrollPercent = Math.round((s / (d - c)) * 100);
if (scrollPercent > 74 && scrollPercent < 76 && !inRange) {
inRange = true;
};
if (scrollPercent < 75 && scrollPercent > 75 && inRange) {
inRange = false;
dataLayer.push({'Project Profile':'75% Scrolled'});
};
if (scrollPercent > 49 && scrollPercent < 51 && !inRange2) {
inRange2 = true;
};
if (scrollPercent > 50 && scrollPercent < 50 && inRange2) {
inRange2 = false;
dataLayer.push({'Project Profile':'50% Scrolled'});
};
})
- 你真的只需要某种标志,一旦你达到 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 中阅读更多内容