2017-04-27 14 views
0

私はGoogleタグマネージャを使用してiframe要素(動画)のクリックをキャプチャします。最初に訪問者がiframeをクリックすると、特別な値をDataLayerにプッシュしたい(ここには含まれていない)。if-condition内でJS - setInterval/clearIntervalが機能しない

これは、これまでの私のコードです:アイフレームのクリックを検出

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

は完璧に動作し、警告も同様に取り組んでいるが、のsetIntervalがてclearIntervalによって停止されていません。

私は最近コーディングを始めましたので、どんな助けにも感謝します。

基本的には、IF内の関数を1回だけ実行する必要があります。インターバルが使用されている必要があります。私はGTMを使用しているので、グローバル変数としてモニターを定義することはできません。

+0

あなたは '(この)'てclearIntervalを試してみましたか? – Mazz

+0

ありがとうございます - はい、しかし、どちらもうまくいきませんでした。 – jonasMy

答えて

0

制御がifのケースに入るかどうかを確認してください。それ以外の場合は停止しません。

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/

関連する問題