Problème boucle for + popup

Résolu
$0M3oNe Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   -  
$0M3oNe Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   -
bonjour, je me trouve en ce moment devant un problème en javascript que je ne comprend absolument pas:
je voudrais que lorsqu'on clique sur un bouton, une popup s'ouvre puis se ferme 5 secondes plus tard, et cela 3 fois de suite. voici ce que j'ai écrit:
function popup()
{
	for (vble = 0; vble < 3; vble++)
	{
	test = window.open("http://www.google.fr");
	window.setTimeout("test.close()",5000);
	}
}


mais je au lieu de ça, il m'ouvre les 3 popup de suite, puis me ferme la troisième après 5 sec; un peu comme si il n'exécutait la 2eme instruction qu'après avoir exécuté 3 fois la première (si vous voyez ce que je veux dire). et si j'enlève la boucle for ou si je fixe la condition à
vble < 1
tout fonctionne parfaitement.
j'ai cherché pendant 2 heures sur le web sans rien trouver T_T alors je voudrais au moins avoir vos avis sur la question...

merci d'avance de vos réponses!
A voir également:

5 réponses

canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
Voilà, pas besoin d'array en fait :

var a;
var i = 0;
function ouvrir() {
if(i<3) {
a = window.open('http://example.com');
window.setTimeout(fermer,5000);
i++;
}
}
function fermer() {
a.close();
window.setTimeout(ouvrir,1000);
}
ouvrir();
http://jsfiddle.net/qn2vpbor/1/

___/\_canarder_/\___
~Waterfox|Palemoon~
1
canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
Les pop-ups c'est dépassé, utilise un bloc flottant (avec une iframe ou ajax).
0
$0M3oNe Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   85
 
bonjour canarder,
merci pour ta réponse (même si elle ne répond pas vraiment au problème), mais après avoir des recherches et beaucoup d'essais avec iframe, je me suis retrouvé devant le problème des X-frame-options. Tu as du certainement en entendre parler, c'est en gros une protection des sites pour qu'il ne soient pas affichés dans des frame justement (c'était à la base pour éviter les hacks), et le problème c'est que j'ai précisément besoin de les afficher. donc je suis bloqué, as-tu une solution?
0
canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
Ah dans ce cas, pas vraiment, je ne comprend pas exactement ce que tu veux faire. Tu ne peux pas agir sur un élément d'un autre domaine en javascirpt.
0
canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
Ah ok je viens de comprendre le problème. Il te faut un nom de variable différent pour chaque fenêtre !
Peut-être que tu peux utiliser ça : https://www.w3schools.com/js/js_arrays.asp
Un setTimeout ne bloque pas l'exécution du script.
0
$0M3oNe Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   85
 
je ne cherche pas à agir sur les éléments du site, je cherche simplement à l'ouvrir dans une autre fenêtre/onglet/frame. en l'occurence même sans JS ce n'est plus possible de le faire dans des frames (à cause de la protection X-frame). par contre excuse moi mais je ne comprend pas très bien ce que tu entend par "un nom de variable différend pour chaque fenêtre", comment faire pour changer le nom d'une variable dans une boucle? (la valeur c'est logique, mais le nom...)
0
canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
bah justement, pour ça que je t'ai donné un lien.
0
$0M3oNe Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   85
 
ah ok, le lien ne s'était pas affiché ^^ je regarde ça tt de suite
0
$0M3oNe Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   85
 
Ok merci ça marche parfaitement! d'ailleur le setTimeout dans la fonction fermer n'est pas nécessaire non plus. ça montre bien du coup que le problème venait de la boucle for; c'est frustrant de ne pas pouvoir l'utiliser, ça simplifierait grandement le code >_<
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
canarder Messages postés 1714 Date d'inscription   Statut Membre Dernière intervention   355
 
C'est tout simplement parce que setTimeout() ne stoppe pas le script.
0
$0M3oNe Messages postés 336 Date d'inscription   Statut Membre Dernière intervention   85
 
yop, ça parait logique. bon sujet résolu donc.
0