11540 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour à tous,

J'ai un script javascript dont le but est de faire défilé du texte.
Tout marche bien sous Fireofx mais sous IE le texte dépasse de son conteneur.
Il semblerait que le problème vienne du fait que IE gère mal la propriété CSS "overflow: hidden;".

Voici le code :

<script language="javascript" type="text/javascript">

var t;//on declare le timer
function bBouge()
{
var texte_defilant=document.getElementById('texte_defilant');//ion recupere la balise qui a pour id "texte_defilant"

var pxLeft=texte_defilant.style.left.replace('px','');//on recupere le chiffre ( sans le px a la fin )

var taille_texte=texte_defilant.offsetWidth;//offsetWidth c'est la taille du div.

var screenW=document.getElementById('slogan').offsetWidth;//taille de la balise <div> qui contient le msg defilant

if(pxLeft==0-taille_texte)//si les pixels sont arrivés par rapport au bord gauche a la taille du texte ( donnera donc une position negative, du genre -100 )

pxLeft=screenW;//on remet le texte a la fin ( tout a droite )

else
pxLeft--;//on baisse les pixels ( ce qui provoque le decalage vers la gauche)

texte_defilant.style.left=pxLeft+"px";//on attribue la nouvelle position au texte

t=setTimeout('bBouge();',25);//toute les 0.010 secondes on rappele la fonction a l'infini ( recursivement )

}

onload=function(){

document.getElementById('texte_defilant').style.left=document.getElementById('slogan').offsetWidth+'px';

t=setTimeout('bBouge();',25);

}
</script>


Le morceau de code correspondant au texte défilant :

<div id="slogan" onmouseover="clearTimeout(t);" onmouseout="bBouge()">
<span id="texte_defilant">
Utiliser le <a class="a2" href="pack.php">pack graphique</a> vous permet d'afficher toutes les pages du site plus rapidement ; en <a class="a2" href="pack.php">savoir plus</a>.
</span>
</div>
[code]

Le CSS correspondant :
[code]
#slogan {
height: 20px;
width: 738px;
margin: 3px 3px 5px 3px;
background-color: #7791A2;
border: 1px solid #5A5D57;
line-height: 12px;
text-indent: 5px;
overflow: hidden;
}
#texte_defilant{
position: relative;
}


Pour ceux qui aurait besoin d'une visualisation, voici à quoi ressemble le site : Pragmatus.
La page n'est pas à jour, elle ne contient pas les code ci-dessus mais c'est juste pour ceux qui veulent une visualisation.

Je suis preneur de toute forme de solutions. J
'avais déjà poster dans le forum XHTML pour un cas similaire, est ce qu'il est possible de modifier mon code Javascript pour résoudre mon prolème ?

Merci.
Modifié par LoK (15 Jun 2005 - 08:55)
LoK a écrit :
Bonjour à tous,

le but est de faire défilé du texte.

Il y a la balise <marquee> qui fonctionne sur la plupart des browsers récents.
chmel a écrit :
Il y a la balise <marquee> qui fonctionne sur la plupart des browsers récents.

Ça ressemble un tout petit peu à un troll quand même.
Quel est l'interet de ce texte défilant réellement? Normallement ce genre de technique est utilisé pour afficher des des infos plus longues que le conteneur en economisant de la place, mais dans ton cas le texte est plus court que le bandeau, donc à part donner un côté kitsch et legèrement (!) beauf je vois pas du tout à quoi ça peut servir.
a écrit :
Quel est l'interet de ce texte défilant réellement? Normallement ce genre de technique est utilisé pour afficher des des infos plus longues que le conteneur en economisant de la place, mais dans ton cas le texte est plus court que le bandeau, donc à part donner un côté kitsch et legèrement (!) beauf je vois pas du tout à quoi ça peut servir.


Le texte défilant changera régulièrement, si il est petit pour l'insant c'est que je n'ai rien à mettre dedans mais au fils du temps le texte dépassera largement le conteneur.


a écrit :
Il y a la balise <marquee> qui fonctionne sur la plupart des browsers récents.


La balise <marquee> n'est pas une balise standart de la W3C, je préférai, dans la mesure du possible, ne pas l'utiliser.
Salut Lok

je viens d'essayer ton code mais le résultat sous IE comme sous FF est sans appel : ça marche sans problème Smiley langue Smiley ravi Est-ce que tu pourrais être un petit plus précis sur la nature de ton problème ?
LoK a écrit :

La balise <marquee> n'est pas une balise standart de la W3C, je préférai, dans la mesure du possible, ne pas l'utiliser.


En fait c'est pas pour rien qu'elle ne fait pas partie des specs, d'une part elle est proprio mais aussi c'est une balise exaspérante pour pas mal de monde Smiley smile
Donc plutôt que de se soucier de la validité de la chose, je me soucierais de l'utilité et de ce qu'en pensent les gens Smiley smile

Mais bon... c'est un point de vue.
a écrit :
je viens d'essayer ton code mais le résultat sous IE comme sous FF est sans appel : ça marche sans problème langue ravi Est-ce que tu pourrais être un petit plus précis sur la nature de ton problème ?


J'ai modifier le lien que j'ai donné en utilisant la baslise <marquee> pour que ca fonctionne mais si il y a un moyen de ne pas l'utiliser, je suis preneur.

Sous FF, tout marche nikel, mais le problème c'est que sous IE, le texte ne reste pas dans son cadre et défile sur toute la page.
Aparement ca vient du fait qu'IE gère mal le "overflow: hidden;"


a écrit :
Donc plutôt que de se soucier de la validité de la chose, je me soucierais de l'utilité et de ce qu'en pensent les gens


Penses tu vraiment qu'un texte défilant agresse les visiteurs ?
Dans la mesure, où mon texte défile lentement et que les informations défilant ne sont pas obligées d'être lu ; le visiteur n'est pas géné.
LoK a écrit :

Donc plutôt que de se soucier de la validité de la chose, je me soucierais de l'utilité et de ce qu'en pensent les gens


Penses tu vraiment qu'un texte défilant agresse les visiteurs ?
Dans la mesure, où mon texte défile lentement et que les informations défilant ne sont pas obligées d'être lu ; le visiteur n'est pas géné.

Perso ? OUI !
Ca m'enerve ce genre de truc Smiley langue même si c'est un peu moins chiant si c'est lent.
Ca m'atire l'oeil sur ce qui bouge et la lecture du contenu est moins facile...
a écrit :
Ca m'atire l'oeil sur ce qui bouge


C'est aussi le but, on peut considérer le texte défilant comme une méthode de mise en valeur d'un message.

a écrit :
la lecture du contenu est moins facile...


Ca j'avoue ca peut géner certaines personnes mais tu molettes 2 ou 3 coup avec ta souris et hop, tu voit pu le texte défilant et tu met le contenu plus en valeur.
Je te cite Jakon Nielsen (http://www.useit.com), le pape de l'ergonomie sur internet :

a écrit :
... contient du texte défilant. Le texte animé empêche les visiteurs de se concentrer sur les autres éléments de la page; par ailleurs, ce mode d'affichage est aussi peu plaisant qu'inéfficace. Le contenu défilant ne s'immobilise que quelques instants, de sorte que les visiteurs doivent se dépêcher d'en prendre connaissance avant qu'il ne disparaisse. Paradoxalement, la plupart des visiteurs auront tendance à ignorer cette zone malgré l'animation pourtant censée la faire ressortir... En effet l'expérience qu'ont généralement les utilisateurs des animations est qu'elles sont inintéressantes et que leur traitement nécessite plus d'efforts, de sorte qu'ils préfèrent les ééviter.
Je pense que je le laisserai et ferai un sondage sur mon site pour savoir si les utilisateurs le lisent ou pas et si le texte défilant les genent ou pas et j'agirais en conséquences.
Tu fais ce que tu veux Smiley cligne

Seulement si nous on dit ça, et que le maître le dit aussi, c'est parce qu'il a de l'expérience et a étudier pendant des années le comportement des utilisateurs Smiley cligne
Olivier a écrit :


elle est proprio .

Pas tant que ça. Testez sur vos navigateurs favoris :
http://www.w3.org/WAI/ER/IG/ert/test73A.htm

Il doit y avoir un moyen de rendre l'info accessible Smiley lol , ça vaut p'tête mieux qu'un js de 100 liqnes.
Ok, c'est pas standard et ça agresse le visiteur, mais comme lok souhaite cette animation et qu'il ne maitrise pas javascript, je proposait la moins mauvaise des méthodes. marquee a pas mal de paramètres et peut être éxécutée une seule fois pour limiter la gène.
Modifié par chmel (17 Jun 2005 - 20:08)
chmel a écrit :

Pas tant que ça. Testez sur vos navigateurs favoris :
http://www.w3.org/WAI/ER/IG/ert/test73A.htm

Faut quand même situer la page dans son contexte :
Techniques For Accessibility Evaluation And Repair Tools a écrit :

Checkpoint 7.3 - Until user agents allow users to freeze moving content, avoid movement in pages

Technique 7.3.1 [priority 1] Check for MARQUEE elements

Evaluation:

* Element: MARQUEE.

Suggested message:

* The MARQUEE element is not defined in any W3C HTML specification and should not be used.

Suggested repair:

* Allow the user to remove MARQUEE elements from the document.
* Allow the user to replace MARQUEE elements with any of the following elements:
1. STRONG
2. EM
3. SPAN - allow the user to enter attributes for the element.
4. H1
5. H2
6. H3
7. H4
8. H5
9. H6

Test Files and Discussion Files:

* Test file - marquee.

http://www.w3.org/WAI/ER/IG/ert/
À rajouter dans vos userContent.css Smiley cligne

/* Stop those <marquee> tags! */
marquee {
   -moz-binding: none !important;
   display: block;
   height: auto !important;
}

Un bon <marquee> est un <marquee> mort !
Modifié par Stephan (18 Jun 2005 - 00:48)
a écrit :

À rajouter dans vos userContent.css cligne

/* Stop those <marquee> tags! */
marquee {
-moz-binding: none !important;
display: block;
height: auto !important;
}

Un bon <marquee> est un <marquee> mort !


Aparement tout le mode à l'air contre les textes défilants, je pense que je vais réflechir à ca.
Mais du coup je sait pas où mettre mes petites informations importantes !
LoK a écrit :

Aparement tout le mode à l'air contre les textes défilants, je pense que je vais réflechir à ca.
Mais du coup je sait pas où mettre mes petites informations importantes !


Et pourquoi pas dans un paragraphe tout simplement ? Smiley cligne

Ensuite, à toi de jouer sur une mise en forme et un style spécifique qui indiquer "l'importance" du truc sans agresser le visiteur avec des cligno de partout etc.

Une couleur chaude et vive fait généralement son effet.
Tu peux par exemple mettre une bordure à ton texte de couleur vive et intense et mettre un fond dans les mêmes tons mais très pastel. Ce n'est qu'un exemple Smiley smile Des icones font aussi leur effet généralement Smiley cligne
Pages :