以下情况: 在单页面应用程序上,当我们在该页面上打开特定文章时会触发ArticleClick。我认为在ArticleClick事件发生10秒后读取了一篇文章。
到目前为止,这可以通过GTM中的Timer功能实现。
唯一的问题是,当事件被触发时,9秒后我打开另一个事件,这将导致第二个计时器启动,无论我做什么,只要网站打开(因为它是单页)那里将永远是一个阅读事件。有没有一种简单的方法可以在10秒钟之前打开另一篇文章(和另一个计时器)时停止第一个计时器?
答案 0 :(得分:0)
通过使用datalayer变量来存储计时器的状态(运行与否)。
请注意,这里的真或假是字符串而不是布尔值,这是因为需要将DL-variable的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毫秒时,它不会继续并且它会再次启动。