Avec un collègue nous sommes parfois pas d'accord au niveau JS sur certaines manières de faire.
J'explique le contexte :
- Imaginons un script de popin, cette popin doit pouvoir se repositionner lorsqu'on redimensionne le navigateur.
- Jusqu'ici cas peuvent être pris en compte :
- la popin est positionnée à coup de "top:50%; margin-top:-largeurPopin/2; position:fixed" (idem pour la position:horizontale) dans ce cas pas de problème ça se passe très bien.
- Si le haut de la popin arrive en haut du navigateur il ne faut plus passer par un margin-top + top:50% mais passer par un top:XXpx. La détection de ce "moment fatidique" doit être faite sur l'évènement resize. Sauf que cette évènement n'est exécuté qu'une fois que l'utilisateur à fini le redimensionnement sous IE6/7 (ptet 8) et non au fur et à mesure comme c'est le cas pour les autres navigateurs.
Pour pallier à ce problème, lors de l'ouverture de cette popin, je lance un setInterval toutes les 20ms, et la fonction associée va détecter s'il y a eu un changement de hauteur ou de largeur du viewport, et à ce moment là elle va éxecuter le reste du code nécessaire au traitement évoqué plus haut.
- lors de la fermeture de la popin je fais un clearInterval évidement
Mon collègue trouve que l'utilisation d'un setInterval est dégueulasse dans ce cas.
J'aimerai bien avoir vos avis éclairés sur le sujet
Merci
Modifié par Gatsu35 (26 May 2011 - 12:03)
J'explique le contexte :
- Imaginons un script de popin, cette popin doit pouvoir se repositionner lorsqu'on redimensionne le navigateur.
- Jusqu'ici cas peuvent être pris en compte :
- la popin est positionnée à coup de "top:50%; margin-top:-largeurPopin/2; position:fixed" (idem pour la position:horizontale) dans ce cas pas de problème ça se passe très bien.
- Si le haut de la popin arrive en haut du navigateur il ne faut plus passer par un margin-top + top:50% mais passer par un top:XXpx. La détection de ce "moment fatidique" doit être faite sur l'évènement resize. Sauf que cette évènement n'est exécuté qu'une fois que l'utilisateur à fini le redimensionnement sous IE6/7 (ptet 8) et non au fur et à mesure comme c'est le cas pour les autres navigateurs.
Pour pallier à ce problème, lors de l'ouverture de cette popin, je lance un setInterval toutes les 20ms, et la fonction associée va détecter s'il y a eu un changement de hauteur ou de largeur du viewport, et à ce moment là elle va éxecuter le reste du code nécessaire au traitement évoqué plus haut.
- lors de la fermeture de la popin je fais un clearInterval évidement
Mon collègue trouve que l'utilisation d'un setInterval est dégueulasse dans ce cas.
J'aimerai bien avoir vos avis éclairés sur le sujet

Merci
Modifié par Gatsu35 (26 May 2011 - 12:03)