2017-04-27 9 views
0

Ich benutze Google Tag Manager und möchte Klicks auf Iframe-Elemente (Videos) erfassen. Wenn ein Besucher zum ersten Mal auf den Iframe klickt, möchte ich spezielle Werte an den DataLayer (hier nicht enthalten) senden.JS - setInterval/clearInterval funktioniert nicht if-condition

Dies ist mein Code so weit:

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; 
} 
} 

Erkennung von Klicks auf der iframes funktioniert perfekt, und die Warnung als gut funktioniert, aber die setInterval wird nicht von clearInterval gestoppt.

Ich habe vor kurzem mit der Codierung begonnen, so dass jede Hilfe geschätzt wird.

Grundsätzlich möchte ich die Funktion innerhalb der IF nur einmal ausführen - und das Intervall muss verwendet werden, da ich jede Sekunde überprüfen muss, wenn die Person bereits den iframe angeklickt hat (= aktiv ist). Da ich GTM verwende, kann ich Monitor nicht als globale Variable definieren.

+0

haben Sie versucht, 'clearInterval (this)'? – Mazz

+0

Danke - ja, aber es hat auch nicht funktioniert. – jonasMy

Antwort

0

Bitte überprüfen Sie, ob das Steuerelement in den if-Fall geht. Sonst wird es nicht gestoppt.

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/