Eines Tages stellte der Leiter die Anforderung, ein Iframe in die Hauptseite einzubetten und Nachrichten zwischen den übergeordneten und untergeordneten Seiten in beide Richtungen zu senden. Dann habe ich eine Lösung vorgeschlagen: postMessage Wissenstheoretische Vorbereitung: Mit der Methode „postMessage“ können Skripts aus verschiedenen Quellen in begrenztem Umfang asynchron kommunizieren und Nachrichten dokumentenübergreifend, in mehreren Fenstern und domänenübergreifend übermitteln. Grammatik: otherWindow.postMessage(Nachricht, Zielursprung, [Übertragung]);
Wenn die Methode postMessage aufgerufen wird, wird eine MessageEvent-Nachricht an das Zielfenster gesendet, nachdem alle Seitenskripte ausgeführt wurden. Die MessageEvent-Nachricht hat vier Eigenschaften, die beachtet werden müssen:
Der Betriebsablauf ist wie folgt: 1. Bereiten Sie zwei Seiten vor
Haupt-Datei.html <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <title>iframe+postMessage Hauptseite für domänenübergreifende Kommunikation</title> </Kopf> <Text> <h1>Hauptseite</h1> <iframe id="child" src="http://b.com/iframepage.html"></iframe> <div> <h2>Bereich zum Empfangen von Nachrichten auf der Hauptseite</h2> <span id="Nachricht"></span> </div> </body> </html> iframeseite.html <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <title>iframe+postMessage-Unterseite für domänenübergreifende Kommunikation</title> </Kopf> <Text> <h2>Unterseiten</h2> <div> <h3>Nachrichtenempfangsbereich</h3> <span id="Nachricht"></span> </div> </body> </html> 2. Eltern senden Nachricht an Kind Haupt-Datei.html <Skript> fenster.onload = funktion(){ document.getElementById('Kind') .contentWindow.postMessage("Hauptseitennachricht", "http://b.com/iframepage.html") } </Skript> Beachten: Die Nachricht muss nach dem Laden der Seite gesendet werden, sonst wird ein Fehler gemeldet, weil das Iframe nicht geladen wurde.
Unterseite empfängt Nachricht: iframeseite.html <Skript> window.addEventListener('Nachricht',Funktion(Ereignis){ console.log(Ereignis); document.getElementById('message').innerHTML = "Empfangen" + event.origin + "Nachricht: " + event.data; }, FALSCH); </Skript> An dieser Stelle können Sie erkennen, dass die Seite in der Unterseite des Iframes ausgedruckt wird.
Und die Konsole druckt das MessageEvent-Objekt. 3. Das Kind sendet eine Nachricht an die Eltern Die untergeordnete Seite antwortet der übergeordneten Seite, nachdem sie die Nachricht erhalten hat iframeseite.html <Skript> window.addEventListener('Nachricht',Funktion(Ereignis){ console.log(Ereignis); document.getElementById('message').innerHTML = "Empfangen" + event.origin + "Nachricht: " + event.data; top.postMessage("Unterseitennachricht empfangen", 'http://a.com/main.html') }, FALSCH); </Skript> Die übergeordnete Seite empfängt die Nachricht und zeigt Folgendes an: window.addEventListener('Nachricht', Funktion(Ereignis){ document.getElementById('message').innerHTML = "Empfangen" + event.origin + "Nachricht: " + event.data; }, FALSCH); 4. Code vervollständigen Haupt-Datei.html <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <title>iframe+postMessage Hauptseite für domänenübergreifende Kommunikation</title> </Kopf> <Text> <h1>Hauptseite</h1> <iframe id="child" src="http://b.com/iframepage.html"></iframe> <div> <h2>Bereich zum Empfangen von Nachrichten auf der Hauptseite</h2> <span id="Nachricht"></span> </div> </body> <Skript> fenster.onload = funktion(){ document.getElementById('Kind') .contentWindow.postMessage("Hauptseitennachricht", "http://b.com/iframepage.html") } window.addEventListener('Nachricht', Funktion(Ereignis){ document.getElementById('message').innerHTML = "Empfangen" + event.origin + "Nachricht: " + event.data; }, FALSCH); </Skript> </html> iframeseite.html <!DOCTYPE html> <html> <Kopf> <meta charset="utf-8"> <title>iframe+postMessage-Unterseite für domänenübergreifende Kommunikation</title> </Kopf> <Text> <h2>Unterseiten</h2> <div> <h3>Nachrichtenempfangsbereich</h3> <span id="Nachricht"></span> </div> </body> <Skript> window.addEventListener('Nachricht',Funktion(Ereignis){ wenn(Fenster.übergeordnet !== Ereignis.Quelle){return} console.log(Ereignis); document.getElementById('message').innerHTML = "Empfangen" + event.origin + "Nachricht: " + event.data; top.postMessage("Unterseitennachricht empfangen", 'http://a.com/main.html') }, FALSCH); </Skript> </html> Dies ist das Ende dieses Artikels über das Implementierungsbeispiel für bidirektionale Nachrichtenübermittlung zwischen HTML-Eltern- und -Kindseiten-Iframes. Weitere relevante Inhalte zu bidirektionaler Nachrichtenübermittlung zwischen HTML-Eltern- und -Kindseiten-Iframes finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! |
<<: Einführung in die Verwendung von Unicode-Zeichen in Webseiten (&#, \u usw.)
>>: CSS erzielt farbenfrohe und intelligente Schatteneffekte
Szenario So rendern Sie Listen mit bis zu 10.000 ...
Inhaltsverzeichnis 1. Einleitung 2. Die erste Met...
Unabhängig davon, ob es sich um einen Samba-Diens...
Inhaltsverzeichnis Schleife - für Grundlegende Ve...
In diesem Artikelbeispiel wird der spezifische Co...
Quellcode herunterladen Git-Klon https://github.c...
Das Projekt wurde in diesen Tagen getestet und de...
Vor Kurzem bereitete sich das Unternehmen auf die...
Inhaltsverzeichnis Zusammenfassung Gesamtprozess ...
Mit der zunehmenden Anzahl offener Plattformen ver...
Da der Standard-AB nur Stresstests für eine einze...
Der Unterschied zwischen „Ersetzen durch“ und „Ei...
AWS – Amazons Cloud-Computing-Serviceplattform Ic...
Überblick über die Alibaba Cloud Security Group F...
Gibt es in MySQL eine Möglichkeit, Leerzeichen st...