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
Inhaltsverzeichnis Experimentelle Umgebung Instal...
Die von Navicat exportierten Daten können nicht i...
Vorwort Seit der offiziellen Einführung von vue3....
Die HTML-Struktur ist wie folgt: Die CCS-Struktur...
Herunterladen und installierenUmgebungsvariablen ...
VMware vSphere ist die branchenführende und zuver...
Wenn Sie Alibaba Cloud Server verwenden, müssen S...
Vorwort Um sicherzustellen, dass Ihre Webseiten in...
Einigen Eigenschaften in CSS geht ein "*&quo...
Hinweis: Dieser Artikel wurde von jemand anderem ü...
Auf keinen Fall. Es stellt sich heraus, dass es L...
1. Verwenden Sie CSS-Sprites. Der Vorteil besteht ...
HTML Quelltext: <a onclick="goMessage();&...
Hintergrund Haben Sie sich jemals gefragt, wie Si...
Konfigurationsmethode für die kostenlose Installa...