Es scheint, als ob der Zweck von window.postMessage darin besteht, eine sichere Kommunikation zwischen Fenstern / Frames zu ermöglichen, die auf verschiedenen Domänen gehostet werden, aber dies scheint dies in Chrome nicht zuzulassen .
Hier ist das Szenario:
- Betten Sie einen <iframe> (mit einem
src
auf Domäne B * ) in eine Seite auf Domäne A ein - Der <iframe> ist meistens ein <script> -Tag, an dessen Ende die Ausführung erfolgt ...
- Ich rufe window.postMessage auf ( some_data , page_on_A )
Der <iframe> steht definitiv im Kontext von Domäne B, und ich habe bestätigt, dass das eingebettete Javascript in diesem <iframe> ordnungsgemäß ausgeführt wird und postMessage
mit den richtigen Werten aufgerufen wird.
Ich erhalte diese Fehlermeldung in Chrome:
Nachricht kann nicht an A gesendet werden . Empfänger hat Ursprung B .
Hier ist der Code, der einen Listener für Nachrichtenereignisse auf der Seite auf A registriert:
window.addEventListener(
"message",
function (event) {
// Do something
},
false);
Ich habe auch versucht anzurufen window.postMessage(some_data, '*')
, aber alles was das tut, ist den Fehler zu unterdrücken.
Fehlt mir hier nur der Punkt, ist window.postMessage (...) nicht dafür gedacht? Oder mache ich es einfach schrecklich falsch?
* Mime-Typ Text / HTML, der es bleiben muss.