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 :

Javascript et Doctype pour en finir


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    FoxLeRenard
    Invité(e)
    Par défaut Javascript et Doctype pour en finir
    Bonjour,

    J' ais appelé ça Javascripte et Doctype pour en finir , en fait pour avoir parcouru toute la toile (non quand même pas) mais pas loin de un mois de travail et lecture, rien de bien convainquant

    Pour faire court, dans l'exemple de ma question j'ais une valeur "qui"
    pour le navigateur ...
    De même nx et ny pour la largeur et la hauteur de ma fenêtre.

    Avant, à la belle époque, j'avais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     if (qui==1){ nx=document.body.offsetWidth;ny=document.body.offsetHeight;  }
      if (qui==2){  nx = innerWidth;  ny = innerHeight; }
      if (qui==3){  nx=window.innerWidth; ny=window.innerHeight;}
    J'obtenait, indispensable pour moi, la taille au pixel pret de ma fenêtre visible !
    nx et ny enpixels.
    Sachant que mon DOCTYPE était a l'époque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    Maintenant, le seul fait d'étre passé a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   "http://www.w3.org/TR/html4/loose.dtd">	
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"  lang="fr">
    Fait que ça ne marche plus !
    J'obtient bien un semblant de résultat avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nx=document.documentElement.offsetWidth;
    ny=document.documentElement.offsetHeight;
    Mais ce n' est plus de loins au pixel pret ...

    Une idée ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    tu as mis un css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    html, body {height:100%;
                       width:100%}
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    tu as mis un css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    html, body {height:100%;
                       width:100%}
    Houla tu m' intrigue, je files tester ça de suite et te tiens au courant
    mille mercis à toi


    De retour, même résultat, mais tu as eu raison, la piste méritait d'étre visitée,

    En gros j'obtient
    au lieu de réel 1672*870
    nx = 1651 ny = 849

  4. #4
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    http://en.wikipedia.org/wiki/Quirks_mode

    Dans le premier cas, tu es en mode quirks (dégradé) et dans le second en mode almost quirks (presque dégradé).

    Les règles d'interprétation du css variant beaucoup entre les 2 modes, c'est normal que tu aies des valeurs différentes pour tes dimensions ^^

  5. #5
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    http://en.wikipedia.org/wiki/Quirks_mode

    Dans le premier cas, tu es en mode quirks (dégradé) et dans le second en mode almost quirks (presque dégradé).

    Les règles d'interprétation du css variant beaucoup entre les 2 modes, c'est normal que tu aies des valeurs différentes pour tes dimensions ^^
    Merci de ta réponse, mais tu connais la non-fiabilitée de wikipedia

    Même si tu lis
    http://pagesperso-orange.fr/coin.des...s/faq9_64.html
    Tu verra que je ne suis pas tenu d'étre en strict, alors que mes pages sont en HTML, bien que respectant les normes fermeture balises etc ...

    Bon alors toi tu proposes quoi comme choix de DOCTYPE et HTML (les deux si tu peux) car tant qu'a faire je voudrais trouver le moyen Javascript de pouvoir continuer a utiliser ces modules javascript !!

  6. #6
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    tu as mis un css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    html, body {height:100%;
                       width:100%}
    J'arrives a une amélioration en utilisant cette méthode trouvée
    sur la toile

    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
     
     
    function getDocumentSize()
    {
        return new Array((document.documentElement && 
    document.documentElement.scrollWidth) ? 
    document.documentElement.scrollWidth : (document.body.scrollWidth > 
    document.body.offsetWidth) ? document.body.scrollWidth : 
    document.body.offsetWidth,(document.documentElement && 
    document.documentElement.scrollHeight) ? 
    document.documentElement.scrollHeight : (document.body.scrollHeight > 
    document.body.offsetHeight) ? document.body.scrollHeight : 
    document.body.offsetHeight);
     
    }
     
    var XX=new Array;
    XX=getDocumentSize();
    nx= XX[0];
    ny= XX[1];
    A voir ... mais nx = 1671 ny = 879 c' est presqque parfait ...

    Je réédites car la valeur tient compte des scrolls donc ne convient pas
    il faut en rester au moins pire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nx=document.documentElement.offsetWidth;
    ny=document.documentElement.offsetHeight;
    Dernière modification par FoxLeRenard ; 04/02/2009 à 20h40.

  7. #7
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Même si tu lis
    http://pagesperso-orange.fr/coin.des...s/faq9_64.html
    Tu verra que je ne suis pas tenu d'étre en strict, alors que mes pages sont en HTML, bien que respectant les normes fermeture balises etc ...

    Bon alors toi tu proposes quoi comme choix de DOCTYPE et HTML (les deux si tu peux) car tant qu'a faire je voudrais trouver le moyen Javascript de pouvoir continuer a utiliser ces modules javascript !!
    Le mode quirks n'a rien a voir avec le doctype strict/transitional html/xhtml. Ton navigateur peut très bien être en mode de compatibilité standard avec un doctype transitionnal, donc fermer toutes tes balises ne changera rien au fait qu'avec le premier doctype, tu es en quirks, et avec le deuxième non.

    Pour avoir eu le même genre de soucis que toi, par exemple sous IE je crois, la même instruction javascript offsetHeight (je sais pas si c'était pas une autre? mais l'idée reste la) va être interprétée de manière tout a faire différente en quirks ou non. Du genre dans un mode, il va te retourner l'offset par rapport au parent, et dans l'autre par rapport au viewport (plus de détails ici pour illustration, dans le premier lien).

    Si tu veux réellement conserver tes fonctions, repasse en mode quirks en remettant ton premier doctype. Si tu veux mettre le deuxième, je crains que tu n'aies guère d'autre choix que de recoder tes fonctions.

    PS: jveux bien que certains article de wikipedia puissent être pris avec des pincettes, mais ca n'a pas l'air d'être le cas de l'auteur du tableau

  8. #8
    FoxLeRenard
    Invité(e)
    Par défaut
    Bien lu ta réponse et merci d'avoir pris ce temps, par contre tu écris ceci,


    Citation Envoyé par DoubleU Voir le message
    Le mode quirks n'a rien a voir avec le doctype strict/transitional html/xhtml. Ton navigateur peut très bien être en mode de compatibilité standard avec un doctype transitionnal,
    Tu voulais dire le contraire , puisque c' est le DOCTYPE qui fait basculer sur un même site web, avec le même micro qui le visite , son navigateur en
    mode quirks

    Voila pourquoi tant que 99% des navigateurs se plierons au mode quirks, je crois que je garderais mon DOCTYPE réduit

    Mais ais-je raison

  9. #9
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Oui j'ai mal tourné ma phrase, je voulais dire autre chose mais c'est passé par pertes et profit quand j'ai reformulé

    Ce que je voulais dire c'est que même si tu as une page qui était valide, par exemple xhtml avec un bon doctype, mais que tu mettais un doctype foireux, tu passerais en mode quirks.

Discussions similaires

  1. [PHP-JS] Interaction entre javascript et php pour XUL
    Par WalidNat dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2011, 13h26
  2. [DOM] JavaScript et DOM pour modifier du texte
    Par flykev dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 18/07/2006, 15h04
  3. quel doctype pour mon site ?
    Par Nimajneb dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 15/06/2006, 20h19
  4. Editeur de texte javascript : Problème doctype
    Par psychoBob dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/12/2005, 12h58
  5. [JavaScript] Taile minimale pour une fenêtre web
    Par efficks dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/12/2005, 14h57

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