Problème boucle for + popup

Résolu/Fermé
$0M3oNe Messages postés 336 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 24 octobre 2016 - 3 oct. 2014 à 23:45
$0M3oNe Messages postés 336 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 24 octobre 2016 - 4 oct. 2014 à 14:28
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 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
Modifié par canarder le 4/10/2014 à 13:36
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 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
4 oct. 2014 à 00:47
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 samedi 1 décembre 2012 Statut Membre Dernière intervention 24 octobre 2016 84
4 oct. 2014 à 11:55
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 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
4 oct. 2014 à 12:15
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 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
Modifié par canarder le 4/10/2014 à 12:21
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 samedi 1 décembre 2012 Statut Membre Dernière intervention 24 octobre 2016 84
4 oct. 2014 à 12:28
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 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
4 oct. 2014 à 12:36
bah justement, pour ça que je t'ai donné un lien.
0
$0M3oNe Messages postés 336 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 24 octobre 2016 84
4 oct. 2014 à 12:40
ah ok, le lien ne s'était pas affiché ^^ je regarde ça tt de suite
0
$0M3oNe Messages postés 336 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 24 octobre 2016 84
4 oct. 2014 à 14:02
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 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
4 oct. 2014 à 14:21
C'est tout simplement parce que setTimeout() ne stoppe pas le script.
0
$0M3oNe Messages postés 336 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 24 octobre 2016 84
4 oct. 2014 à 14:28
yop, ça parait logique. bon sujet résolu donc.
0