通过使用数据层变量来存储计时器(运行或不)的状态解决。
请注意,这里的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密耳秒时,它不会继续并且它再次开始。