2017-04-20 3 views
0

Ich sehe, dass, wenn postMessage() innerhalb eines beforeunload Fensterereignisses in einem Ionic 2-Browser aufgerufen wird, die Nachricht nie das übergeordnete Element erreicht. Wenn dieselbe Nachricht im Ereignis unload oder load gebucht wird, wird sie erfolgreich empfangen. In JQuery:postMessage in beforeunload schlägt fehl

$(window).on('beforeunload', function() { 
    parent.postMessage('TheMessage', 'domain.com'); //NOT received by parent 
});  

$(window).on('unload', function() { 
    parent.postMessage('TheMessage', 'domain.com'); //Received by parent 
}); 

$(window).load(function(){ 
    parent.postMessage('TheMessage', 'domain.com'); //Received by parent 
}); 

In diesem Fall sind wir Entsendung von einem IFrame auf die Eltern und beide Seiten sind vom gleichen Eigentümer kontrolliert, sondern kommen aus verschiedenen Bereichen.

Ist dies das erwartete Verhalten? Ich sehe, dass alert is not allowed in beforeunload aber sehen keine Regeln über postMessage:

Seit dem 25. Mai 2011 die HTML5-Spezifikation besagt, dass zu window.alert() aufruft, window.confirm() und window.prompt () Methoden können während dieses Ereignisses ignoriert werden.

Gibt es eine Möglichkeit postMessage in beforeunload zu verwenden?

Antwort

0

Dies geschieht nur in iOS und es scheint keine Möglichkeit zu geben, es zu ändern. In Android wird beforeunload wie erwartet ausgelöst.