Google Tag Manager中的纯JavaScript内部促销
我的任务是创建一个纯JS内部促销跟踪器,并通过GTM实现。我不确定我是以一种非常复杂的方式做的,还是不愿意接受任何建议 目前,我有以下标签: 此函数用于检查视口中是否存在稍后引用的元素Google Tag Manager中的纯JavaScript内部促销,javascript,google-tag-manager,Javascript,Google Tag Manager,我的任务是创建一个纯JS内部促销跟踪器,并通过GTM实现。我不确定我是以一种非常复杂的方式做的,还是不愿意接受任何建议 目前,我有以下标签: 此函数用于检查视口中是否存在稍后引用的元素 function isInViewport(element) { var rect = element.getBoundingClientRect(); var html = document.documentElement; return ( rect.top >= 0 &
function isInViewport(element) {
var rect = element.getBoundingClientRect();
var html = document.documentElement;
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || html.clientHeight) &&
rect.right <= (window.innerWidth || html.clientWidth)
);
}
函数isInViewport(元素){
var rect=element.getBoundingClientRect();
var html=document.documentElement;
返回(
rect.top>=0&&
rect.left>=0&&
rect.bottomA)您可以使用布尔值来检测是否执行了数据层推送,如下所示:
window.onscroll = myfunction;
var ecommerceObject;
var event;
var done = false; // example of a new variable
function myfunction() {
for (var i = 0; i < cars.length; i++) {
if (isInViewport(list[i]) === true && !done) { //execute only if NOT done
done = true; //set done to true
ecommerceObject['ecommerce']['promoView'] = {
'event' : 'promoview',
'promotions': [{
'id': items[i].innerText.split("\n")[1],
'name': items[i].id
}]
};
window.dataLayer.push(ecommerceObject);
}
}
}
window.onscroll=myfunction;
var电子商务对象;
var事件;
var done=false;//新变量的示例
函数myfunction(){
对于(变量i=0;i
B) 你为什么把它放在3个单独的脚本中
window.onscroll = myfunction;
var ecommerceObject;
var event;
function myfunction() {
for (var i = 0; i < cars.length; i++) {
if (isInViewport(list[i]) === true) {
ecommerceObject['ecommerce']['promoView'] = {
'event' : 'promoview',
'promotions': [{
'id': items[i].innerText.split("\n")[1],
'name': items[i].id
}]
};
window.dataLayer.push(ecommerceObject);
}
}
}
window.onscroll = myfunction;
var ecommerceObject;
var event;
var done = false; // example of a new variable
function myfunction() {
for (var i = 0; i < cars.length; i++) {
if (isInViewport(list[i]) === true && !done) { //execute only if NOT done
done = true; //set done to true
ecommerceObject['ecommerce']['promoView'] = {
'event' : 'promoview',
'promotions': [{
'id': items[i].innerText.split("\n")[1],
'name': items[i].id
}]
};
window.dataLayer.push(ecommerceObject);
}
}
}