【问题标题】:JS - setInterval/clearInterval not working inside if-conditionJS - setInterval/clearInterval 在 if 条件中不起作用
【发布时间】:2017-09-25 04:53:35
【问题描述】:

我使用 Google 跟踪代码管理器并希望捕获对 iframe 元素(视频)的点击。当访问者第一次点击 iframe 时,我想将特殊值推送到 DataLayer(此处不包含)。

这是我目前的代码:

function (){
var monitor = setInterval(isIFrame,1000);

function isIFrame(){
    var elem = document.activeElement;
    if(elem && elem.tagName == 'IFRAME'){
    clearInterval(monitor);
    alert ("x"); //The datalayer code would go here instead
   }
return;
 }
}

检测 iframe 上的点击效果很好,警报也正常工作,但 setInterval 并没有被 clearInterval 停止。

我最近开始编码,因此我们将不胜感激。

基本上,我希望 IF 中的函数只运行一次 - 并且必须使用间隔,因为我必须每秒检查该人是否已经单击(= 在内部处于活动状态)iframe。由于我使用 GTM,我无法将监视器定义为全局变量。

【问题讨论】:

  • 你试过clearInterval(this)吗?
  • 谢谢 - 是的,但也没有用。

标签: javascript iframe google-tag-manager


【解决方案1】:

请检查控件是否进入if case。否则不会停止。

interval()
function interval(){
var monitor = setInterval(isIFrame,1000);
var elem = "document.activeElement";
function isIFrame(){
    if(elem && elem== 'IFRAME'){
    clearInterval(monitor);
    alert("x"); //The datalayer code would go here instead
   }
    elem = "IFRAME"
return;
 }
}

http://jsfiddle.net/Rishi0405/96nhf1x3/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多