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
Der CSS-Implementierungscode zum Festlegen des Bi...
1.MySQL UPDATE JOIN-Syntax In MySQL können Sie di...
In der Yum-Quelle von Centos7 ist standardmäßig k...
Wenn Sie das Breitenattribut direkt auf den Stil d...
Um einen Flex-Container zu erstellen, fügen Sie e...
1. Einrichten des virtuellen Nginx-Hosts Mit virt...
Seit der Einführung des contentEditable-Attributs ...
Inhaltsverzeichnis Überblick 1. Entwickeln Sie di...
In diesem Artikel verwenden wir die Libudev-Bibli...
Heute zeige ich Ihnen einen gut aussehenden Zähle...
Vorwort Golang stellt das Datenbank-/SQL-Paket fü...
Laden Sie zunächst das Installationspaket von der...
Der Befehl „top“ ist der beste Befehl, den jeder ...
Verständnis des Diff-Algorithmus in React diff -A...
Als ersten Artikel dieser Studiennotiz beginnen w...