当以下两条规则成立时,我尝试触发GTM标记: rules image
自定义js变量的内容是:
function () {
setTimeout(function () {
var thankyouMessage = document.querySelector("#newsletter-success").innerHTML === "Thank you for your subscription.";
console.log('thankyouMessage', thankyouMessage);
return thankyouMessage;
}, 2000)
}

目前标签未被触发。 每当我删除自定义规则时,标记都会被触发,但是当我添加它时,我可以看到' true'打印到我的控制台,这意味着自定义规则正确运行。 我还尝试使用不同的自定义规则,该规则不涉及“设置时间”和#39; setTimeout'它起作用了。但我必须使用超时,因为我试图捕获的事件不会立即发生。
如何正确触发标签?
感谢。
答案 0 :(得分:0)
您可以将代码编辑为自定义html标记,而不是使用自定义的javascript变量。
“自定义HTML标记”将由“所有元素单击触发器”触发,其中“单击类等于”按钮。 (你的同一个触发器没有ThanksForSub ..检查)。
自定义HTML标记将调用超时函数,而不是返回一个值,它将执行dataLayer.push并将结果包含在其中。
然后,您将使用此事件和dataLayer值在您希望最初触发的标记上创建自定义事件触发器。
为了访问传递的值,您需要使用'成功'来创建用户定义的可变数据层类型。作为关键。
自定义HTML标记脚本。
<script>(function() {
try {
setTimeout(function () {
var thankyouMessage = false;
var thankyouMessageObj = document.querySelector("#newsletter-success");
if(thankyouMessageObj && typeof thankyouMessageObj.innerHTML != 'undefined') {
thankyouMessage = thankyouMessageObj.innerHTML === "Thank you for your subscription.";
}
console.log('thankyouMessage', thankyouMessage);
//return thankyouMessage;
if(typeof window.dataLayer != 'undefined') {
window.dataLayer.push({
'event' : 'newsleter.submit',
'success' : thankyouMessage
});
}
}, 2000)
} catch (e) {
}})();</script>