2010-06-10 10 views
0

J'ai une page sur x.com. Sur cette page se trouve un bouton qui, une fois cliqué, lancera une nouvelle fenêtre (en utilisant la méthode window.open() de javascript) vers une page qui se trouve sur z.com. La popup fait quelques choses, puis redirige la fenêtre d'origine (l'ouvreur, x.com) vers une page différente en fonction de certains paramètres définis dans le popup.Fenêtre d'ouverture de redirection Iframe/Popup

Cela fonctionne très bien dans Firefox/Chrome, mais pas dans IE. Dans IE (8 spécifiquement, mais je crois que 7 a aussi ce problème) la fenêtre d'origine (l'ouvreur) n'est pas redirigée. Au lieu de cela, une nouvelle fenêtre apparaît et cette fenêtre est redirigée.

J'ai essayé plusieurs méthodes pour essayer de faire fonctionner ceci, y compris en changeant le popup en iframe chargé sur la page et en ayant une fonction sur l'ouvreur que l'appel popup/iframe. Le problème semble être que IE refuse de permettre aux sites inter-domaines de se parler via javascript.

Y a-t-il un moyen de contourner cela? Comment puis-je rediriger la fenêtre parente vers une page en fonction des paramètres d'une popup ou d'iframe?

EDIT:

Voici un code pour les échantillons:

Dans une page sur domainA.com, j'ai ceci:

<img src='/images/test.png' onclick="window.open('http://www.domainB.com/item.aspx', 'name', 'width=100,height=100,menubar=no,status=no,toolbar=no');" /> 

En item.aspx sur domainB.com J'ai ceci dans le javascript:

opener.location.href = 'http://www.somethingelse.com/'; 

En Fir efox/Chrome, cela fonctionne bien. Dans IE, lorsque domainB.com tente de définir location.href sur opener (aka la fenêtre parente, qui est domainA.com), il ouvre à la place une nouvelle fenêtre, ce qui n'est pas ce que je veux. Je veux qu'il redirige l'ouvreur (fenêtre parent) à l'URL que j'ai spécifiée.

Bara

+1

pouvez-vous montrer du code? –

+0

Vérifiez mes modifications pour le code. – Bara

Répondre

0

j'ai fini le résoudre en procédant comme suit:

J'ai ajouté une iFrame sur ma page principale. L'iFrame est dans le même domaine que mon popup. L'iFrame contient un bouton qui, une fois cliqué, lancera le popup. Le popup est fait, puis change la balise de hachage de l'iFrame en quelque chose comme #change (donc l'URL serait www.whatever.com/iframe.aspx#change). Dans le javascript de l'iFrame, j'ai une boucle en cours qui vérifie le hachage pour voir si elle dit "changer" et si c'est le cas, il redirigera la page parente là où je veux. Cela fonctionne magnifiquement.

Parce que je ne voulais pas la boucle infinie sur chaque page, je fais une vérification du navigateur afin que cela ne s'applique qu'à IE. Pour tous les autres navigateurs, j'utilise simplement window.opener qui fonctionne bien.

Bara

3

Salut, je résolu mon problème en faisant la suivante au lieu d'utiliser window.opener.location = "....

Utilisez window.opener.document.location =" url ». cela a fonctionné pour moi.

Une autre chose est de vous assurer que vous êtes pas de redirection de http en https ce sera aussi provoquer sa rupture.

Vive

+0

obtenir le message d'autorisation refusée :( – Binod