Erkennen, wenn ein iframe Fokus erhält oder verliert
Was ist der richtige Weg zu erkennen, wenn ein iframe Fokus erhält oder verliert (D. H. wird oder erhalten keine Tastatur-Ereignisse)? Das folgende ist nicht in der Fx4:
var iframe = /* my iframe */;
iframe.addEventListener("focus", function() { /* never gets called */ }, false);
- Bitte haben Sie einen Blick auf stackoverflow.com/questions/1926861/iframe-onblur-event
- Ich habe keine Kontrolle über den Inhalt des iframe (unterschiedlicher Herkunft) und die Methode erfordert den Zugriff auf iframe.contentDocument (nicht erlaubt für Dokumente aus einer anderen Quelle)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Umfrage "Dokument.activeElement", um zu bestimmen, ob Sie mit der iframe. Polling ist nicht ideal, aber es funktioniert:
ich weiß, es ist alt, aber ich hatte auch das gleiche problem.
landete ich mit diesem kleinen Schnipsel von code:
focusout
ausgelöst werden mehrere DOM Elemente, die nicht nur auf Iframes (textarea, Input etc).Stellt sich heraus, es ist nicht wirklich möglich. Ich hatte zum ändern der Logik auf meiner Seite zu vermeiden, die Notwendigkeit der Nachführung, wenn der iframe Fokus hat.
Wie um zu überprüfen, wenn ein iframe geklickt wurde, oder auch als hover-Zustand.
Hinweis: ich würde empfehlen, Sie nicht wählen, eine polling-Methode und gehen mit einem event-driven-Methode wie diese.
Haftungsausschluss
Es ist nicht möglich, mit dem
focus
oderblur
Veranstaltungen direkt auf einen iframe, aber Sie können Sie auf derwindow
bieten eine ereignisgesteuerte Methode der überprüfung derdocument.activeElement
. So können Sie erreichen, was Sie wollen.Obwohl wir nun im Jahr 2018, mein code umgesetzt wird im GTM und versucht, eine cross-browser-kompatibel zurück zum IE 11. Dies bedeutet, dass es effizienter code, wenn Sie nutzen ES neuere/ECMAScript-Funktionen.
Setup
Werde ich an dieser ein paar Schritte weiter, um zu zeigen, dass wir auch die iframe -
src
- Attribut als auch festzustellen, ob es schwebte.- Code
Würden Sie im Idealfall benötigen, um diese in ein Dokument ready-Ereignis, oder zumindest verkapseln, so dass die Variablen nicht global [vielleicht mit einer IIFE]. Ich habe nicht wickeln Sie es in ein Dokument bereit, denn es behandelt die von GTM. Es kann auch davon abhängen, wo Sie diese oder wie man es zu laden, wie in der Fußzeile.
https://jsfiddle.net/9285tbsm/9/
Habe ich bemerkt, im JSFiddle Album, dass es bereits ein iframe, manchmal müssen Sie uns zuerst, bevor die Veranstaltungen beginnen zu erfassen. Andere Probleme sein können, dass Ihr browser-Fenster noch nicht fokussiert entweder.
Ist die Lösung zu injizieren einer javascript-event auf der übergeordneten Seite wie diese :
Hier ist der code, der erkennt, wenn ein iframe Fokus erhält oder verliert
Dies könnte