2017-08-01 112 views
0

以下情况: 在单页应用程序中,发生以下事件:ArticleClick在我们在该页面上打开特定文章时触发。在ArticleClick事件发生10秒后,我认为读取了一篇文章。GTM计时器触发器

到目前为止,这可以使用GTM中的定时器功能来完成。

唯一的问题是,当事件发生时,9秒后我打开另一个事件,这将导致第二个计时器启动,无论我做什么,只要网站打开(因为它是单页)总会有一个阅读事件。有一个简单的方法来阻止在另一篇文章中(和另一定时器)是10秒之前打开第一计时器已经达到?

回答

0

通过使用数据层变量来存储计时器(运行或不)的状态解决。

请注意,这里的true或falses是字符串而不是布尔值,这是因为DL变量的GTM中的缺省值需要设置为false才能生效,在GTM接口中这样做会自动使值一个字符串。

<script>       
(function() { 
var timerNumber = 1; 
var limit = 1; 
// timer 
var fireTimer = function() {  
     window.dataLayer.push({ 
     'event' : 'ArticleRead',    
     'custom.timer.running' : 'false' 
     }); 
    timerNumber += 1; 
    if (limit < timerNumber) { 
    window.clearInterval(timerId); 
    } 
    }; 


    if ({{custom.timer.running}} == 'false') { 


    window.dataLayer.push({ 'custom.timer.running' : 'true'}); 
    var timerId = window.setInterval(fireTimer, 10000); }  

    })(); 
</script> 

所以,现在当我们第二次触发定时器并且定时器还没有达到它的10000密耳秒时,它不会继续并且它再次开始。