Conflit DOCTYPE avec la fonction javascript document.body.scrollTop sous IE7

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Conflit DOCTYPE avec la fonction javascript document.body.scrollTop sous IE7

par Cyrano » 29 avr. 2008, 06:23

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] ;)

par AB » 28 avr. 2008, 23:35

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!

par Cyrano » 28 avr. 2008, 05:58

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>

Conflit DOCTYPE avec la fonction javascript document.body.sc

par AB » 27 avr. 2008, 23:25

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>