javascript: Abrufen von postMessage-Ereignissen von einem bestimmten iframe

8

Ich habe mehrere iframes auf einer Seite. Jetzt habe ich einen message -Ereignis-Listener für die Seite, der die Nachrichten von allen iFrames bekommt. Ich habe einen Workaround, um zu wissen, von welchem ​​iframe die Nachricht kommt.

Ich möchte Event-Listener für jeden Iframe separat machen. Ist das möglich?

    
forresto 28.04.2013, 18:52
quelle

6 Antworten

1

Nein, das ist nicht möglich. Am besten können Sie einen einzelnen Handler verwenden, der empfangene Nachrichten basierend auf dem Ursprung des Nachrichtenabsenders an Helper-Handler weiterleitet.

    
Ivan Zuzak 02.05.2013, 13:24
quelle
7

Wenn das Attribut src jedes Iframes eindeutig ist, können Sie Folgendes versuchen:

Am Kind:

%Vor%

Auf dem Eltern:

%Vor%

Das Kind sendet seine Höhe und URL mit postMessage() an den Iframe-Elternteil. Das übergeordnete Element wartet dann auf dieses Ereignis, greift den iframe mit dieser URL und legt die Höhe fest.

    
Jan Werkhoven 02.12.2015 01:03
quelle
1

Sie könnten e.originalEvent.origin verwenden, um den iframe zu identifizieren.

Auf dem iframe-Kind:

%Vor%

Auf dem iframe-Elternteil:

Javascript

%Vor%

jQuery

%Vor%

So origin enthält das Protokoll und die Domäne, von der postMessage() abgefeuert wurde. Es enthält den URI nicht. Bei dieser Technik wird davon ausgegangen, dass alle Iframes eine eindeutige Domäne haben.

    
Jan Werkhoven 02.12.2015 05:09
quelle
0

Eine Art zu erkennen, woher die Nachricht kam, ist zu überprüfen, welcher iFrame fokussiert ist oder für welches Szenario iFrame sichtbar ist.

    
Dan Ochiana 15.03.2016 14:34
quelle
0

Eigentlich kannst du. Fügen Sie jedem Iframe ein eindeutiges Namensattribut hinzu. Der iframe-Name wird an das contentWindow übergeben. Also innerhalb von iframe window.name ist der Name des iframe und Sie können es einfach in Post-Nachricht senden.

    
Maciej Krawczyk 07.02.2017 13:13
quelle
0

Sie müssen das globale message -Ereignis des window -Objekts abhören, aber Sie können den Quell-iFrame mit dem source Eigenschaft von MessageEvent .

Beispiel:

%Vor%     
Congelli501 06.12.2017 13:54
quelle