Javascript fenêtre.pas de travail
Ok. Je suis en train d'essayer de vous connecter à twitter. La fenêtre ne s'ouvre pas dans ce code. La réponse qui obtient alerté n'est pas nulle et est un lien vers un écran de connexion. Des idées?
var url = "./twitter_login.php";
var con = createPHPRequest();
con.open("POST",url,true);
con.setRequestHeader("Content-type","application/x-www-form-urlencoded");
con.send("");
var response = "";
con.onreadystatechange = function() {
if(con.readyState==4 && con.status==200) {
response = con.responseText;
alert(response);
window.open(response,"twitter","menubar=1,resizable=1,width=350,height=500");
}
}
La plupart des navigateurs bloc
window.open
si elle n'est pas associée à un événement utilisateur (clavier, souris).OriginalL'auteur Quinn Finney | 2012-08-05
Vous devez vous connecter pour publier un commentaire.
La norme des pop-up blocker logique contenue dans la plupart des navigateurs de ces jours va bloquer tous les appels à
window.open()
qui ne sont pas le résultat direct d'une action de l'utilisateur. Du Code qui est déclenché par minuterie ou par un rappel asynchrone (ajax fonction ready) seront considérés comme NON directement causée par les actions de l'utilisateur et de la nouvelle fenêtre pop-up seront généralement bloqué.Vous pouvez vérifier que c'est ce qui se passe en changeant temporairement de votre navigateur de blocage des fenêtres (éteindre) et de voir qu'il commence ensuite à travailler.
Probablement ce que vous devez faire pour contourner ce problème est de créer la fenêtre sur l'action de l'utilisateur qui a démarré ce fil de code, puis mettre le contenu dans la fenêtre lorsque vous obtenez votre réponse ajax. Le navigateur va probablement permettre cela. Je sais que c'est moins souhaitable d'un point de vue visuel, mais vous pouvez en mettre temporaire contenu dans la fenêtre jusqu'à ce que la réponse ajax (quelque chose comme "chargement en cours...").
window.open
, puis le passer à votre rappel dans lequel vous ferezmywindow.location = someurl
Que faire quand j'en ai besoin pour tirer une autre requête ajax? Il ne fonctionne pas correctement, sauf par l'intermédiaire d'une action de l'utilisateur.
Pour nous, pour vous aider, vous devez poster votre propre question et de montrer votre propre code. Il n'y a pas de navigateur blocage des appels ajax via l'action de l'utilisateur, de sorte que la pièce n'a pas de sens. Nous allons pas discuter ici. Si vous voulez plus d'aide, veuillez poster votre propre question.
OriginalL'auteur jfriend00
Juste eu exactement le même problème. Juste au cas où vous vouliez le code qu'il fixe. J'ai utilisé ceci:
OriginalL'auteur the_doc