2014-05-09 3 views
1

Lorsque j'essaie d'accéder à un élément de ma fenêtre Parent à partir d'une fenêtre contextuelle, j'obtiens window.opener comme non défini.window.opener n'est pas défini sur Internet Explorer

var opener = window.opener; 
if(opener) 
{ 
    console.log("opener element found"); 
    var elem = opener.$('.my-parent-element'); 
    if (elem) { 
     console.log("parent element found"); 
     elem.show(); 
    } 
} 

Ici opener est indéfini. Est-ce que je fais quelque chose de mal?

J'ai essayé parent.window.opener/window.top/window.top.document.body etc., mais cela n'aide pas non plus. Cela fonctionne très bien dans d'autres navigateurs.

J'ai vu la question Window Opener Alternative, mais je ne peux pas changer l'ouverture de mon popup avec showModalDialog tout de suite. Probablement, ce serait la dernière option.

+0

L'ouvre-porte est-il le même hôte? A-t-il été redirigé? – Timmetje

+0

Oui c'est. ...... – Shubh

+0

Ensuite, je pense qu'il a à voir avec les zones de sécurité IE: http://stackoverflow.com/questions/15822885/window-opener-null-on-same-domain-in-ie – Timmetje

Répondre

2

Vous pouvez utiliser la fonction showModalDialog et lui transmettre des arguments si le navigateur utilisé est IE. Passez simplement l'objet window en argument. Ensuite, vous pouvez accéder aux arguments de la fenêtre modale en utilisant dialogArguments.

Plus de détails peuvent être trouvés dans la documentation ici: http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx

Exemple de récupérer:

window.showModalDialog(theURL, window); 

//in the modal dialog you can use this to retrieve the window. 
var openerWindow = window.dialogArguments; 
+0

Désolé d'être en retard. Comme je l'ai dit avant l'implémentation avec 'showModalDialog' serait la dernière option (donc cela a pris du temps). J'ai changé mon code et couru. Tout va bien. Merci. – Shubh

+0

Vous êtes les bienvenus! Nous espérions que nous pourrions trouver une meilleure alternative. – Andrei

12

J'ai eu le même problème et cela était dû à Internet Explorer Options de sécurité, en particulier parce que mon popup était sur un site Web externe (zone Internet) et le parent était une page interne (zone Intranet). Le "Mode protégé" n'a été activé que pour "Internet". Je l'ai activé pour le "Intranet local" et maintenant ça marche.

Pour trouver cette option dans IE:

  • Aller à Options Internet
  • __gVirt_NP_NN_NNPS<__ onglet Sécurité
  • Cliquez sur "Internet" ou sur l'icône "Intranet local"
  • Cochez ou décochez l'option « Activer Mode protégé "
  • Redémarrer IE