Probleme avec scrollTo in IE 6.0

fifoooo Messages postés 7 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 19 décembre 2005 - 22 févr. 2005 à 12:15
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005 - 26 févr. 2005 à 02:42
Bonjour

Voila plusieurs jours que je cherche a resoudre ce probleme.

J'utilise un script javascript pour mettre en couleur les mots tapes par l'utilisateur dans mon formulaire. Lorsque celui-ci tape Entree, la page est rechargee pour prendre en compte les mots cles a mettre a en couleur.
Pour plus de clarte, je souhaite que la page, une fois rechargee, 'saute' directement a l'endroit ou l'utilisateur se trouvait. J'utilise donc pour cela la fonction scrollTo(X,Y) qui utilise les variables X et Y que je passe dans l'URL.

Mon probleme? IE semble toujours 'sauter' au meme endroit sur la page (par exemple (0,233) pour une page donnee) alors q les valeurs passees a la fonction scrollTo sont justes!
Autre chose: ca marche parfaitement avec Mozilla!

Y'a-t-il un bug avec IE?

Merci pour votre aide. Voici le code:




function getScrollCoords()


{


// Dealths with IE


if (document.all) {


if (!document.documentElement.scrollLeft) {


scrollX = document.body.scrollLeft;


}


else {


scrollX = document.documentElement.scrollLeft;


}


if (!document.documentElement.scrollTop) {


scrollY = document.body.scrollTop;


}


else {


scrollY = document.documentElement.scrollTop;


}


}


// All other browsers


else {


scrollX = window.pageXOffset;


scrollY = window.pageYOffset;


}


alert('Ds getScrollCoords X=' + scrollX + ' Y=' + scrollY);


}





function setScrollPosition()


{


var coordIndex = window.location.href.indexOf('&xy=');


// check if there are scroll coord


if(coordIndex>0){


var coords = ( window.location.href.indexOf('&xy=') + 1 ) ? window.location.href.substr(window.location.href.indexOf('&xy=') + 4) : "";


xy = coords.split(',');


window.scrollTo(Number(xy[0]),Number(xy[1]));


alert('Ds setScrollPosition: X=' + xy[0] + ' Y=' + xy[1]);


}


else {


// do nothing


return true;


}


}

8 réponses

chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
22 févr. 2005 à 18:04
Utiliser des ancres nommées ne serai pas plus simple?
0
fifoooo Messages postés 7 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 19 décembre 2005
22 févr. 2005 à 20:34
Je comprends ta solution mais ce n'est pas ce q je recherche.
En effet tu peux etre au milieu d'un paragraphe et ce q je veux c rester au mm endroit. Et puis comment savoir quelle ancre est la plus proche de tte facon si je voulais utiliser ton idee?

Merci qd mm
0
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
22 févr. 2005 à 23:44
si c'est IE qui cloche !
Je pense que !document.documentElement.scrollLeft ne te donnera pas forcément le bon branchement si le scroll est à 0.
Je préfère modifier comme ceci :


// Dealths with IE
dtd= document.compatMode=="CSS1Compat"?1:0;// détection dtd correct
if (document.all) {
if (!dtd) {
scrollX = document.body.scrollLeft; ...
0
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
23 févr. 2005 à 09:10
Tu doit avoir en début de ta page un doctype avec une DTD pointant sur le site
du W3c. C'est trés bien, IE6 et Opéra 7 (document.all) respectent mieux les
standards. J'ai une formule encore plus simple :


if (!document.documentElement.width) {


scrollY = document.body.scrollTop;


}

document.documentElement.width aura toujours une valeur supérieur à 100, car IE n'accepte pas que la fenêtre soit plus petite.
0

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

Posez votre question
fifoooo Messages postés 7 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 19 décembre 2005
23 févr. 2005 à 17:33
Merci bcp pour ta reponse mais je dois malheureusement conclure q ca ne marche toujours pas!

J'ai ajoute la dtd et modifier mon code comme suit mais rien a faire :
var dtd ( document.compatMode "CSS1Compat") ? 1 : 0 ;
if (document.all) {
if (!dtd) {
scrollX = document.body.scrollLeft;
}
else {
scrollX = document.documentElement.scrollLeft;
}


if (!dtd) {
scrollY = document.body.scrollTop;
}
else {
scrollY = document.documentElement.scrollTop;
}
}

Ta reponse semblait plus orientee sur le scrollX q sur Y donc je me suis peut etre mal fait comprendre mais c bel et bien le scroll vertical qui cloche!

Merci encore pour ta reponse.
0
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
24 févr. 2005 à 09:09
le test le test doit être lancé en fin de chargement ou par "onload"
un exemple :
http://www.javascriptfr.com/code.aspx?id=26931
0
fifoooo Messages postés 7 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 19 décembre 2005
25 févr. 2005 à 12:04
Oui, c'est ce que je fais, mais rien a faire!
0
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
26 févr. 2005 à 02:42
Il y a forcément une erreur, Tu n'aurai pas une url avec la page entière, montre le source complet ici
0
Rejoignez-nous