PostMessage noch auf IE11 gebrochen?

Scheint es, dass Fenster.postMessage ist immer noch kaputt auf IE 11, wenn die Nachricht

  • zwischen einem Fenster und einem Kind popup/tab mit Fenster.öffnen
  • , wenn es gesendet wird, von anderen Domänen [oder der gleichen Domäne, in einigen Fällen c.f. update 16/01]

Gab es ähnliche Probleme mit dem IE 8/9/10, aber diese Funktion war gekennzeichnet als 'unterstützt' im IE 11 von "teilweise unterstützt" im IE 10

Es ist ein Beispiel für den code, funktioniert auf chrome/ff aber nicht IE:

Den opener (jsfiddle):

$(document).ready(function() {
    $('#log').append('listening...');
    window.addEventListener("message", function(e){
        $('#log').append("Received message: " + JSON.stringify(e.data));
    }, false);
    $('button').click(function() {
        window.open('http://jsbin.com/eQeSeros/1', 'popup','menubar=no, status=no, scrollbars=no, menubar=no, width=200, height=100');
    });
});

Den Kind popup (jsbin): (wird nicht funktionieren, wenn nicht, öffnen von jsfiddle)

$(document).ready(function() {
   $('body').append('sending...');
   window.opener.postMessage("Hello?", "http://fiddle.jshell.net");
   $('body').append('sent...');
});

Lese ich aus dem post Ist cross-origin-postMessage gebrochen in IE10?, die wir verwenden können, eine MessageChannel statt postMessage, aber das Lesen der doc, habe ich nicht herausfinden können, wie es in meinem realen Fall, weil Sie zu Durchlaufen haben, der Anschluss an das untergeordnete Fenster.

Es ist ein redirect-Kette, bevor ich Sie senden müssen, dass meine Botschaft, so dass selbst wenn ich könnte senden Sie einen port, ich werde verlieren js-Objekt gesendet anfangs/vor der leitet.

Jede Idee für einen Ersatz ?

Update 14/01: ich m denken über die Weitergabe meiner Daten in das Fenster/tab-Titel und regelmäßig überprüfen, zu diesem Titel von den Eltern... aber dies wäre ziemlich schmutzigen trick.

Update 16/01: Das wirklich schlimme ist, dass es nicht zu brechen, auch wenn die Nachricht senden, die aus der gleichen Domäne, aber nach der Weiterleitung von einer anderen domain.

hier ist das Beispiel:
http://jsfiddle.net/L4YzG/13/ öffnet das popup -http://jsbin.com/eQeSeros/4/edit, dass Umleitungen zu http://jsfiddle.net/mxS8Q/2/ (das posten der Nachricht)

Wenn Sie ändern Sie den url-popup direkt durch die abschließende url-Umleitungen zu http://jsfiddle.net/mxS8Q/2/show dies funktioniert auf IE, weil es keine andere domain-zwischen die Eröffnung & post

Ich arbeite noch immer an meinem Fenster Titel schmutzigen trick. können wir nicht erhalten den Titel des Fensters, wenn es auf einer anderen domain, aber wenn es kommt wieder auf jsfiddle der Titel ist vorhanden (es ist nicht das Vorherige problem mit postMessage). Hier ist das Beispiel: http://jsfiddle.net/L4YzG/14/ ... Dies kann eine alternative sein, aber ich sah nur etwas über die übergabe der Daten in ein cookie, es muss nur getestet werden.

Update 04/02: die Weitergabe der infos in den Titel, ist nicht ausreichend, wenn die gut funktioniert, wenn die final-domains sind die gleichen, aber nicht cross-domain. Ich wollte injizieren einen iframe von der selben domain zu geben diese infos aber ich kann nicht teilen, die Kind-Fenster-Objekt (postMessage brauchen ein serialisiertes Objekt).

Schließlich habe ich versucht, zu teilen, ein cookie (erstellt & erhielt in js) zwischen den injizierten iframe, und untergeordnete Fenster, das funktioniert gut in chrome & ff, konnte aber immer noch nicht erhalten, richtig mit dem IE. Nach Zugabe von P3P-Header funktionierte es gut, dies scheint die wahre Lösung. Safari scheint einige Probleme mit dieser Technik, so dass ich nur halten diese Technik als fallback.

Kommentar zu dem Problem - Öffnen
Können Sie uns einige details über Ihre cookie-Lösung? Kommentarautor: William

InformationsquelleAutor der Frage bumpmann | 2014-01-12

Schreibe einen Kommentar