3 votes

Puis-je envoyer un message à un ouvreur de fenêtre ?

Je fais window.opener.postMessage('a=1','*') où la fenêtre actuelle a été ouverte via window.open .

A console.log de window.opener affiche la bonne fenêtre, mais je ne vois pas de messages entrant dans l'ouvreur.

Je fais $(window).on( 'message', handleMessage ); où handleMessage a une valeur console.log pour savoir qu'il a été touché. J'ai fait cela à plusieurs reprises pour la communication entre cadres et j'espérais obtenir la même chose pour ma nouvelle fenêtre.

2voto

Quentin Points 325526

En caniuse :

La prise en charge partielle dans IE8-9 ne concerne que le fonctionnement dans les cadres/iframes (pas dans les autres onglets/fenêtres).

Donc oui, c'est possible, mais la prise en charge par le navigateur est plus limitée.

2voto

Dave Stein Points 1638

Il s'agit ici de la jQuery gestionnaire de l'événement. postMessage en mode natif fonctionnera comme suit

function handleMessage( evt ) {
  // evt.data will be whatever was posted
}

window.addEventListener( "message", handleMessage, false );

C'est ce que fait jQuery :

function handleMessage( evt ) {
  // evt.data will be from jQuery where it populates from an argument in .trigger
  // evt.originalEvent.data is from the postMessage
}
$(window).on( 'message', handleMessage );

La compatibilité avec les navigateurs doit également être notée dans la réponse précédente (que j'encourage), mais le cas ici dans Firefox/Chrome est ce que j'ai écrit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X