2012-01-07 4 views
1

Voici mon scénario:Fermer la fenêtre, redirigez après

J'ouvre une fenêtre à partir d'un fichier javascript, et la fixation d'un intervalle pour vérifier si cette fenêtre a été fermée ou non. (Cela agit comme une sorte de fonction de rappel).

Le problème est, la fenêtre que j'ouvre est à une page qui contient une redirection. J'ai donc besoin d'un moyen pour que la fenêtre se ferme après que la redirection ait eu lieu (ainsi le callback peut être déclenché).

Script qui ouvre la fenêtre:

oauthWindow = window.open("login/index.php", "Login", options.windowOptions); 
oauthInterval = window.setInterval(function() { 
    if (oauthWindow.closed) { 
     window.clearInterval(oauthInterval); 
     options.callback(); 
    } 
}, 1000); 

La page qui est en cours d'ouverture va se rediriger:

$url = $oauth->getAuthorizeURL($request['oauth_token']); 
header("Location: " . $url); 

je besoin d'un moyen pour la fenêtre de se fermer après cette redirection a eu lieu. (window.close());

Des idées?

Merci.

+0

Eh bien, vous pouvez faire un appel '$ .ajax()' pour obtenir le nouvel URL, puis rediriger à partir de la page elle-même. –

+0

Avez-vous accès pour modifier la page de connexion et la page vers laquelle elle redirige? Je pense que si c'est le cas, vous pouvez passer un indicateur querystring à la page de connexion, puis la page de connexion à la page de redirection afin que lorsque cette page se charge, elle se ferme immédiatement. – epignosisx

Répondre

3

Vous pouvez vérifier la fenêtre window.location.href de la fenêtre nouvellement ouverte et chaque fois qu'elle est différente de la page de connexion, vous savez que la redirection a eu lieu et que vous pouvez la fermer en toute sécurité. Voici un exemple:

var win = window.open("/login/index.php", "Login"); 
var id = setInterval(function() { 
    if (win.location.href.indexOf("/login/index.php") < 0) { 
     clearInterval(id); 
     //ready to close the window. 
    } 
}, 500); 
+0

Génie. Merci. – Nick