Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即使两种情况均为真,GTM标签也不会触发_Javascript_Google Tag Manager - Fatal编程技术网

Javascript 即使两种情况均为真,GTM标签也不会触发

Javascript 即使两种情况均为真,GTM标签也不会触发,javascript,google-tag-manager,Javascript,Google Tag Manager,当以下两条规则为真时,我试图触发GTM标记: 自定义js变量的内容是: 函数(){ setTimeout(函数(){ var thankyouMessage=document.querySelector(“时事通讯成功”)。innerHTML==“感谢您的订阅。”; console.log('thankyouMessage',thankyouMessage'); 回复感谢信息; }, 2000) }您可以将代码编辑为自定义html标记,而不是使用自定义javascript变量 自定义HTML

当以下两条规则为真时,我试图触发GTM标记:

自定义js变量的内容是:

函数(){
setTimeout(函数(){
var thankyouMessage=document.querySelector(“时事通讯成功”)。innerHTML==“感谢您的订阅。”;
console.log('thankyouMessage',thankyouMessage');
回复感谢信息;
}, 2000)

}
您可以将代码编辑为自定义html标记,而不是使用自定义javascript变量

自定义HTML标记将由所有元素单击触发器触发,其中单击类等于按钮。(没有ThanksForSub..检查的相同触发器)

自定义HTML标记将调用timeout函数,但不会返回值,而是执行dataLayer.push,结果包含在其中

然后,您将使用此事件和最初希望触发的标记上的数据层值创建自定义事件触发器

为了访问传递的值,您需要创建一个用户定义的变量数据层类型,使用“success”作为键

自定义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>
(函数(){
试一试{
setTimeout(函数(){
var thankyouMessage=false;
var thankyouMessageObj=document.querySelector(“时事通讯成功”);
if(thankyouMessageObj&&typeof thankyouMessageObj.innerHTML!=“未定义”){
thankyouMessage=thankyouMessageObj.innerHTML==“感谢您的订阅。”;
}
console.log('thankyouMessage',thankyouMessage');
//回复感谢信息;
if(typeof window.dataLayer!=“未定义”){
window.dataLayer.push({
'event':'newsletter.submit',
“成功”:谢谢留言
});
}
}, 2000)
}捕获(e){
}})();

Hi Itai。这里的问题是
thankyouMessage
返回到
setTimeout
内的函数,而不是外部函数。我手头没有延迟定制js变量的解决方案;但是如果我处在你的位置,我会考虑把这个代码移到你的站点上,并把内容推到GTM>代码>数据层< /代码>。这对你来说是一个可行的选择吗?不,我没有访问代码的权限。但是谢谢你解释这个问题