Bug : Marquee et display none
Bug : Marquee et display none
Bonjour,
il y a un problème avec Firefox, lorsqu'un marquee se trouve dans un bloc 'display: none' ou un iframe 'display: none', lorsqu'un javascript transforme ce bloc en 'display: block', le marquee ne démarre pas.
Exemple : le site http://www.accueil-paysan-dordogne.com utilise la thickbox avec un iframe (défini en display:none au départ), lorsque la page du iframe est chargée et devient visible, le marquee ne démarrerait pas si il n'y avait pas un changement de 'location' après l'événement onload.
La même chose se passe avec un <div id='test' style="display: none; ..."><marquee ...></marquee></div>
qui deviendrait actif par un évènement onMouseOver, onClick, ...
La ruse est dans ce cas de laisser le bloc en "visibility: hidden; display: block" le temps du chargement de la page, puis d'utiliser un timeout lors du onload pour basculer tous les blocs en "display: none" (le timeout est obligatoire car l'événement onload arrive trop tôt par rapport à la gestion de firefox sur cette partie), exemple http://www.paysdeneuvic24.com
L'inconvénient, c'est qu'un bloc 'display: block; visibility: hidden' prend toujours de la place dans une page et que si on utilise pas un 'position: absolute' pour le mettre à un endroit particulier, on obtient un ascenseur inutile.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
il y a un problème avec Firefox, lorsqu'un marquee se trouve dans un bloc 'display: none' ou un iframe 'display: none', lorsqu'un javascript transforme ce bloc en 'display: block', le marquee ne démarre pas.
Exemple : le site http://www.accueil-paysan-dordogne.com utilise la thickbox avec un iframe (défini en display:none au départ), lorsque la page du iframe est chargée et devient visible, le marquee ne démarrerait pas si il n'y avait pas un changement de 'location' après l'événement onload.
La même chose se passe avec un <div id='test' style="display: none; ..."><marquee ...></marquee></div>
qui deviendrait actif par un évènement onMouseOver, onClick, ...
La ruse est dans ce cas de laisser le bloc en "visibility: hidden; display: block" le temps du chargement de la page, puis d'utiliser un timeout lors du onload pour basculer tous les blocs en "display: none" (le timeout est obligatoire car l'événement onload arrive trop tôt par rapport à la gestion de firefox sur cette partie), exemple http://www.paysdeneuvic24.com
L'inconvénient, c'est qu'un bloc 'display: block; visibility: hidden' prend toujours de la place dans une page et que si on utilise pas un 'position: absolute' pour le mettre à un endroit particulier, on obtient un ascenseur inutile.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
Bonsoir,
Je suppose qu'il s'agit de tes sites. Je déplace dans "Développement web".
Je suppose qu'il s'agit de tes sites. Je déplace dans "Développement web".
► Si votre problème est [Résolu], svp, marquez-le.
► Pas de support par mp, l’aide se fait sur le forum.
► Pas de support par mp, l’aide se fait sur le forum.
oui et non, mes sites fonctionnent sur IE6/7 et Firefox,
le problème n'est pas lié à mes sites, mais bien à Firefox.
Si j'ai cité ces sites, c'était essentiellement pour donner de la matière aux experts de Firefox, bien que le principe soit simple.
L'usage de CSS dans les javascript est de plus en plus commun, or dans le cas où un 'marquee' apparait dans un bloc 'display: none' au chargement de la page et que l'on souhaite le faire apparaitre sur un événement particulier, le 'marquee' ne fonctionne pas avec Firefox, alors qu'il fonctionne avec d'autres navigateurs.
C'est donc bien l'interprétation que fait Firefox de cette combinaison, qui est un problème et qui aujourd'hui oblige à bidouiller.
Il n'y a aucun problème de fonctionnement si il n'y a pas de marquee ou que le bloc est 'normal', même si celui-ci devient 'display: none' après le chargement de la page.
A moins qu'il ne s'agissent d'un paramètre de configuration de Firefox, qui positionné pour optimiser la CPU désactive un marquee si il ne peut être visualisé, mais le problème reste entier, le fonctionnement n'est pas conforme à ce que l'on attend (notez que le fait d'agir sur scrollamount ou scrolldelay est sans effet dans le cas pré-cité, le marquee ne déroule rien).
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
le problème n'est pas lié à mes sites, mais bien à Firefox.
Si j'ai cité ces sites, c'était essentiellement pour donner de la matière aux experts de Firefox, bien que le principe soit simple.
L'usage de CSS dans les javascript est de plus en plus commun, or dans le cas où un 'marquee' apparait dans un bloc 'display: none' au chargement de la page et que l'on souhaite le faire apparaitre sur un événement particulier, le 'marquee' ne fonctionne pas avec Firefox, alors qu'il fonctionne avec d'autres navigateurs.
C'est donc bien l'interprétation que fait Firefox de cette combinaison, qui est un problème et qui aujourd'hui oblige à bidouiller.
Il n'y a aucun problème de fonctionnement si il n'y a pas de marquee ou que le bloc est 'normal', même si celui-ci devient 'display: none' après le chargement de la page.
A moins qu'il ne s'agissent d'un paramètre de configuration de Firefox, qui positionné pour optimiser la CPU désactive un marquee si il ne peut être visualisé, mais le problème reste entier, le fonctionnement n'est pas conforme à ce que l'on attend (notez que le fait d'agir sur scrollamount ou scrolldelay est sans effet dans le cas pré-cité, le marquee ne déroule rien).
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
Attention, le fait même d'utiliser marquee est un bidouillage, c'est un élément dont le comportement n'est spécifié nulle part, même pas dans le brouillon de HTML5 (il est juste précisé que les navigateurs doivent s'attendre à tomber dessus sur certaines pages).
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Li tens revient, je ne fais riens. ♪
Sans doute, sans doute (W3C - developer.mozilla.org),
mais bon, c'est quand même galère d'avoir tout le temps des différences.
Cependant, en utilisant start() et stop(), ça fonctionne sans se prendre la tête, donc je vais en rester là pour mon cas personnel, il me semble cependant qu'il y a un truc à voir pour les développeurs de Firefox.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
mais bon, c'est quand même galère d'avoir tout le temps des différences.
Cependant, en utilisant start() et stop(), ça fonctionne sans se prendre la tête, donc je vais en rester là pour mon cas personnel, il me semble cependant qu'il y a un truc à voir pour les développeurs de Firefox.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
Heu, en fait non, si pour le second site, cela fonctionne sans problème,Thierry.l a écrit : Cependant, en utilisant start() et stop(), ça fonctionne sans se prendre la tête
pour le premier cela ne fonctionne que avec l'utilisation d'un timeout, c'est assez curieux.
Code : Tout sélectionner
function recharge()
{
obj=cbeGetElementById("diapo")
if (obj)
{
obj.scrollAmount = 3;
obj.start();
}
}
window.onload=recharge;
...
</head>
...
<marquee id="diapo" scrollamount=3 ...
...
alors que
Code : Tout sélectionner
function demarre()
{
timeoutID = window.setTimeout("recharge()",1);
}
function recharge()
{
obj=cbeGetElementById("diapo")
if (obj)
{
obj.scrollAmount = 3;
obj.start();
}
}
window.onload=demarre;
C'est comme si la construction de l'objet marquee ne se terminait que après l'événement onload.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.0; fr; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités