IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

scrollTop retourne toujours 0


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 137
    Par défaut scrollTop retourne toujours 0
    Hello,

    alors voilà mon problème, j'ai récupéré une fonction dans un très bon livre sur javascript (javascript by david flanagan), cette denrière permet de récupérer la distance en pixel de la barre scroll. Cependant je remarque que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.scrollTop
    me retourne 0 à chaque fois. Sauf lorsque j'enlève dans l'entête de ma page le
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    j'ai aussi essayé avec le doctype pour le html 5
    mais rien n'y fait il retourne toujours 0.

    voici la fonction si jamais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    var Geometry = {};
     
     
    if(document.body.clientWidth !== undefined) {
    	Geometry.getViewportWidth =
    		function() {return document.body.clientWidth;};
    	Geometry.getViewportHeight =
    		function() {return document.body.clientHeight;};
    	Geometry.getHorizontalScroll =
    		function() {return document.body.scrollLeft;};
    	Geometry.getVerticalScroll =
    		function() {return document.body.scrollTop;};
    }
    else if (	document.documentElement &&
    			document.documentElement.clientWidth !== undefined){
    	Geometry.getViewportWidth =
    		function() {return document.documentElement.clientWidth;};
    	Geometry.getViewportHeight =
    		function() {return document.documentElement.clientHeight;};
    	Geometry.getHorizontalScroll =
    		function() {return document.documentElement.scrollLeft;};
    	Geometry.getVerticalScroll =
    		function() {return document.documentElement.scrollTop;};
    }
    else if	(window.innerWidth !== undefined)  {
    	Geometry.getViewportWidth =
    		function() {return window.innerWidth;};
    	Geometry.getViewportHeight =
    		function() {return window.innerHeight;};
    	Geometry.getHorizontalScroll =
    		function() {return window.pageXOffset;};
    	Geometry.getVerticalScroll =
    		function() {return window.pageYOffset;};
    }
    la structure de ma page :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html>
    <html>
        <head>
            [...]
        </head>
     
        <body>
         [...]
    <script type="text/javascript">
    // ma fonction est placée ici
    </script>
        </body>
    </html>

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    Bonjour,

    Suivant le DOCTYPE, il faut utiliser
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.documentElement.scrollTop
    ou
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    document.body.scrollTop

  3. #3
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Tu utilises Firefox ou IE ? Quand tu retires le DOCTYPE, le navigateur passe en mode "Quirks" !

    Pour mémo :
    Chrome et Safari : document.body.scrollTop
    Firefox et IE (avec DOCTYPE) : document.documentElement.scrollTop
    Firefox et IE (sans DOCTYPE, donc Quirks mode) : document.body.scrollTop
    Donc comme tu dois utiliser document.body.scrollTop, il ne fonctionne qu'en mode Quirks pour IE et FF.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
    var scrolLeft = document.body.scrollLeft || document.documentElement.scrollLeft;

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 137
    Par défaut Quelles réponses rapide
    alors,

    @bigboomshakala: Effectivement et ma fonction devrait donc se charger de prendre la bonne méthode (ce qui apparemment ne fonctionne pas).

    @kaamo: D'accord en fait je sais donc où se situe mon problème, je vais donc changer la fonction. Merci pour ces indications je viens d'apprendre un nouveau truc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT]fonction contains retourne toujours false
    Par wildmary dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 01/08/2007, 11h22
  2. 1 site, 2urls, on retourne toujours la même url
    Par c4cf6 dans le forum Apache
    Réponses: 1
    Dernier message: 29/06/2007, 17h02
  3. fonction retournant toujours 0.000 ?
    Par _SamSoft_ dans le forum C
    Réponses: 49
    Dernier message: 22/02/2007, 20h52
  4. [sockets] gethostbyname retourne toujours la même chose
    Par Strab dans le forum Développement
    Réponses: 3
    Dernier message: 15/09/2006, 10h24
  5. Réponses: 2
    Dernier message: 30/03/2006, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo