Page 1 sur 1

Conflit DOCTYPE avec la fonction javascript document.body.sc

Posté : 27 avr. 2008, 23:25
par AB
Bonjour,

Voilà, ce code fonctionne parfaitement avec FF mais pas avec IE7. J'ai remarqué qu'en enlevant la ligne DOCTYPE ça marche.
Mais bon ça m'enbête de supprimer cette ligne. Vous avez une solution, ou une explication ?

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Document sans nom</title> <script type="text/javascript"> <!-- function position() { var y=0; if (window.pageYOffset) y = window.pageYOffset; else if (document.body && document.body.scrollTop) y=document.body.scrollTop; alert(y); } //--> </script> </head> <body> ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne<br />ligne <a href="javascript:position()">position du scroll vertical</a> </body> </html>

Posté : 28 avr. 2008, 05:58
par Cyrano
Voici un élément de réponse :

Code : Tout sélectionner

// Firefox ou IE sans doctype -OU- IE avec doctype HTML 4.0 scrollH = document.body.scrollTop; // ------------------------------------ // IE avec doctype XHTML 1.0 scrollH = document.documentElement.scrollTop;
Il faut donc avec IE tenir compte aussi de quel DOCTYPE est utilisé s'il y en a un. Ta fonction peut donc être modifiée comme suit :

Code : Tout sélectionner

<script type="text/javascript"> /* <![CDATA[ */ function position() { var y=0; if (window.pageYOffset) { y = window.pageYOffset; } else if (document.body && document.body.scrollTop) { y = document.body.scrollTop; } else if (document.documentElement && document.documentElement.scrollTop) { y = document.documentElement.scrollTop; } alert(y); } /* ]]> */ </script>

Posté : 28 avr. 2008, 23:35
par AB
merci Cyrano.

Sinon tu l'a eu où l'information ? J'ai pris ma source dans selfhtml, mais visiblement il devait y avoir de meilleurs exemples. Et puis, damned, j'ai oublié comment faire chez eux pour avoir plus de résultats dans mes recherches...

Je met pas résolu tout de suite pour que tu lise mon message, mais c'est effectivement résolu!

Posté : 29 avr. 2008, 06:23
par Cyrano
Sinon tu l'a eu où l'information ?
Bien franchement, je sais plus trop. J'ai depuis quelques années ramassé tellement d'exemples de code un peu partout que j'ai maintenant des références diverses assez variées, et pour ce cas précis, j'en ai eu besoin l'an dernier pour un positionnement qui devait précisément tenir compte du défilement de la page et ce sous différents navigateurs.

Et tu peux mettre le [Résolu] ;)