Sélectionnez et concentrez une fenêtre déjà existante

Je gère un site de commerce électronique, et je dois faire fonctionner ce popup lorsqu'un client présente une commande. Idéalement, le popop apparaîtra lorsque la page de réussite de la commande sera chargée, mais les bloqueurs de fenêtres contextuelles arrêteront cela.

Au lieu de cela, je génère le popup lorsque l'utilisation clique sur le bouton "confirmer l'ordre", mais cela obscurcit la page 3DSecure sur laquelle la caisse redirige avant la fin de la commande.

Pour compenser cela, je crée le popup lorsque l'utilisateur clique sur «confirmer l'ordre», mais recentrez-le de façon instantanée sur la fenêtre principale; Un pop-under si vous voulez. Mon plan est de recentrer cette nouvelle fenêtre dans la page de réussite de l'ordre.

Le problème est que je ne peux pas trouver un moyen d'obtenir l'objet d'un popup existant afin que je puisse mettre l'accent sur celui-ci. Si je crée la fenêtre en utilisant window.open(url,windowName,options) , est-ce que je peux faire référence à cela à partir d'une autre page? Quelque chose suivant les lignes de window.load(windowName) serait idéal.

La signature de window.open est comme celle-ci.

 var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]); 

MDN note que,

Si une fenêtre avec le nom strWindowName existe déjà, strUrl est chargé dans la fenêtre existante. Dans ce cas, la valeur de retour de la méthode est la fenêtre existante et strWindowFeatures est ignoré. Fournir une chaîne vide pour strUrl est un moyen d'obtenir une référence à une fenêtre ouverte par son nom sans changer l'emplacement de la fenêtre.

Donc cela devrait fonctionner pour vous.

 window.open('', 'windowName', ''); 

Selon MDN chaque fois qu'une fenêtre est ouverte, une référence est créée,

 var windowObjectReference = window.open("http://www.google.com", "popup", "width=500,height=500"); 

Vous pouvez toujours le charger en utilisant cette référence comme

 if(windowObjectReference != null || !windowObjectReference.closed) { windowObjectReference .focus(); } 

C'est délicat, mais cela fonctionne sur Chrome. D'abord, ouvrez la fenêtre:

 window.open('/test', 'testw', ''); 

Un autre lien (même sur une autre page) ouvre une «page» dans cette même fenêtre en passant le même nom de fenêtre. L'URL est JavaScript (donc c'est plutôt un hack):

 window.open('javascript:void window.focus()', 'testw', ''); 

http://jsfiddle.net/pimvdb/KeHtp/