2016-11-02 1 views
1

Ich möchte Click Set Condition und Display-Meldung für 2 Bedingung zählen. Wenn Sie das erste Mal klicken, wird die Nachricht "clicked" angezeigt. Ich habe zum zweiten Mal geklickt, es wird "Pause geklickt" angezeigt. Ich versuche diesen Code. Es wird erkannt, dass in iframe geklickt wird, aber nicht der Bedingung folgt.Anzahl klicken Sie in iframe Javascript

var action = 1; 
 
var monitor = setInterval(function(){ 
 
    var elem = document.activeElement; 
 
    if(elem && elem.tagName == 'IFRAME'){ 
 
    if (action == 1) { 
 
     message.innerHTML = 'Clicked'; 
 
     action = 2; 
 
    } else { 
 
     message.innerHTML = 'paused Clicked'; 
 
     action = 1; 
 
    } 
 
     clearInterval(monitor); 
 
    } 
 
}, 100);
iframe { 
 
    width: 500px; 
 
    height: 300px; 
 
}
<iframe id="iframe" src="//example.com"></iframe> 
 
<div id="message"></div>
http://jsfiddle.net/lemonkazi/16sdrqbq/

+0

gibt es irgendwelche Javascript-Fehler in der Inspektor-Konsole? – joshpj1

+0

@JoshJackson Ich habe dort jsfiddle hinzugefügt und es wird kein Fehler in der Konsole angezeigt. –

Antwort

2

Sie deaktivieren Sie das Intervall am Boden (clearInterval(monitor);), an keiner Stelle so ist diese Funktion wieder laufen gehen. Es setzt die Aktion korrekt auf 2, aber damit es action == 1 überprüft, müsste es diese Funktion erneut ausführen.

Leider ist das, was Sie erreichen möchten, nicht möglich (Erkennen mehrerer Klicks in einem Iframe), wenn Sie nicht kontrollieren, was in den Iframe hineingeht. Die activeElement ist eigentlich ziemlich clever, aber da ein erneutes Klicken im iframe nicht zu einer erneuten Änderung führt, gibt es keine Möglichkeit, einen weiteren Klick zu erkennen. Sie müssten dem Inner-Frame ein Ereignis hinzufügen, das denselben Zugriff erfordert. Siehe here und here.