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
Beim Freigeben eines Projekts müssen Sie häufig d...
Es gibt viele MySQL-Variablen, von denen einige u...
Dies ist ein Betrugsschema für Abstimmungswebsite...
In diesem Artikel wird der spezifische Code von v...
Die MyISAM- und InnoDB-Engines von MySQL verwende...
Inhaltsverzeichnis 1. Problembeschreibung 2. Prob...
CPU-Last und CPU-Auslastung Beides kann bis zu ei...
Wir können den scp-Befehl von Linux (scp kann unt...
Inhaltsverzeichnis 1 Testumgebung 1.1 Server-Hard...
MySQL-Installation (4, 5, 6 können weggelassen we...
Die Voraussetzungen sind wie folgt Exportieren Si...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Master-Slave-Replikationsmecha...
Inhaltsverzeichnis Methode 1: Set: Es handelt sic...
Inhaltsverzeichnis 1. Hintergrund des Problems: 2...