Aufgrund der Einschränkungen der Same-Origin-Richtlinie treten bei Javascript domänenübergreifende Kommunikationsprobleme auf. Zu den typischen domänenübergreifenden Problemen gehört die Kommunikation zwischen Iframe und Parent usw.
Mehrere gängige Lösungen:
(1) document.domain iframe;
(2) Skript dynamisch erstellen
(3) iframe location.hash;
Ich werde hier nicht näher auf diese Methoden eingehen. Was aufgezeichnet wird, ist die window.postMessage von HTML5.
postMessage ist mit IE8, Firefox, Opera, Safari und Chrome kompatibel.
Zum Testen sind zwei ausländische Server erforderlich. Natürlich können auch lokale und Online-Server als zwei ausländische Server verwendet werden.
Wenn Sie Phonegap zum Entwickeln verwenden, können Sie die Anforderungsdatei auf dem Client installieren und dann die Datenverarbeitung des Servers dynamisch anfordern, um die Daten abzurufen und anzuzeigen. Auf diese Weise kann jede Webentwicklungssprache und -methode verwendet werden, um das für die Phonegap-App erforderliche Backend zu entwickeln.
1. Verwendung von postMessage
postMessage ist eine neue API, die von HTML5 eingeführt wurde, um js-domänenübergreifende Probleme zu lösen und mehrere Iframes/Fenster zu ermöglichen domänenübergreifende Kommunikation.
Angenommen, die Struktur ist wie folgt:
"test">Noch keine Informationen.
JavaScript-Code
JavaScript-Code
Es ist ganz einfach, ich glaube, Sie werden es auf einen Blick verstehen. e.data enthält die übertragenen Daten und e.origin verweist auf die Quelldomäne.
Dann sendet iframe.html auch Antwortdaten an test.html und test.html empfängt die Daten. Wenn der Code ähnlich ist, werde ich den Code nicht veröffentlichen.
2. Ajax-Cross-Domain-Anfrage
Basierend auf der oben genannten Cross-Domain-Kommunikation, fügen Sie einfach den Ajax-Code in die Onmessage-Verarbeitungsfunktion im Iframe ein. html, Senden Sie die Anfrage an test.html, indem Sie die von postMessage als Parameter übergebenen Daten verwenden, und übergeben Sie dann die zurückgegebenen Daten mithilfe von postMessage an test.html. Auf diese Weise werden domänenübergreifende Ajax-Anfragen umgesetzt. Eigentlich ist es eine ganz einfache Sache.
Veröffentlichen Sie einen Beispielcode, der jedoch nichts mit dem obigen Code zu tun hat.
Ensuite, faites une démo disgracieuse.
Si la demande de code vous intéresse, veuillez utiliser les outils de développement pour la vérifier. "zebo man" est lu dans la base de données, et "my msg" est le paramètre de la requête Ajax envoyée par sendAndReceive. .html à test.php , renvoyé à sendAndReceive.html via test.php et iframeforAjax.html.
3. Conseils
Vous devez obtenir la fenêtre de contenu de l'iframe pour appeler postMessage.
postMessage doit être appelé après le chargement de l'iframe pour fonctionner normalement. (Cela m'a pris beaucoup de temps)