Utilisant! DOCTYPE invalide hauteur client

  • mk27
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Juin 09, 2009
  • Messages: 334
  • Status: Offline

Message Octobre 4th, 2009, 12:09 pm

Ive regardant autour d'une explication à cela, à l'occasion, pendant un moment et n'ai pas encore trouvé une.

Cela apparaît d'une alerte à la hauteur en pixels de la fenêtre du navigateur:
Code: [ Select ]
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" >
<script type="text/javascript">
function getHeight () {
    var H; 
    if (navigator.appName == "Microsoft Internet Explorer") H =      document.documentElement.scrollHeight;
    else H = document.body.scrollHeight;
    alert(H);
}
</script>
</head>
<body onload="getHeight()">


</body></html>
  1. <html>
  2. <head>
  3. <title>Test</title>
  4. <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" >
  5. <script type="text/javascript">
  6. function getHeight () {
  7.     var H; 
  8.     if (navigator.appName == "Microsoft Internet Explorer") H =      document.documentElement.scrollHeight;
  9.     else H = document.body.scrollHeight;
  10.     alert(H);
  11. }
  12. </script>
  13. </head>
  14. <body onload="getHeight()">
  15. </body></html>


Toutefois, si vous ajoutez cette (ou tout ce que doctype-so-ever) vers le haut:
Code: [ Select ]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2.   "http://www.w3.org/TR/html4/loose.dtd">

La hauteur sera toujours venus, comme 0 (FF) ou beaucoup trop faible (IE).

Mon problème c'est que j'ai quelqu'un je ne travaille pour l'OMS insiste sur le fait que tout doit passer une validation W3C. Vous devez déclarer un doctype pour le faire.

Quelqu'un sait pourquoi ce qui se passerait? Ou le meilleur de tous - une SOLUTION???
Image
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Octobre 4th, 2009, 12:09 pm

  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Octobre 5th, 2009, 1:43 pm

Ce que vous faites référence la <body> éléments hauteur en utilisant un "document.body.scrollHeight;", et votre élément corps est vide. Pour voir ce que je veux dire, remplissez votre corps avec un certain contenu, et vous obtiendrez une hauteur plus grande est retourné dans votre boîte d'alerte.

Im ne sais pas si c'est la bonne façon de faire, mais voici une solution à votre problème qui obtient la hauteur des documents <html> tag:
Code: [ Select ]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html id="html">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
<script type="text/javascript">
function getHeight()
{
var H = (navigator.appName == "Microsoft Internet Explorer") ? document.documentElement.scrollHeight : document.getElementById('html').scrollHeight;
alert(H);
}
</script>
</head>
<body onload="getHeight(); ">
</body>
</html>
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html id="html">
  3. <head>
  4. <title>Test</title>
  5. <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
  6. <script type="text/javascript">
  7. function getHeight()
  8. {
  9. var H = (navigator.appName == "Microsoft Internet Explorer") ? document.documentElement.scrollHeight : document.getElementById('html').scrollHeight;
  10. alert(H);
  11. }
  12. </script>
  13. </head>
  14. <body onload="getHeight(); ">
  15. </body>
  16. </html>


Son bon pour utiliser une DTD, personnellement j'utilise celui strictes pour tout, et il résout un grand nombre de problèmes dans le long terme. Généralement, je n'aime pas de jouer avec d'essayer de connaître le rapport hauteur / largeur du navigateur, et tout ça, parce que je préfère le liquide de type choses. À mon avis, ce n'est pas très fiable.
There's no place like 127.0.0.1, badass part is now it's ::1
  • mk27
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Juin 09, 2009
  • Messages: 334
  • Status: Offline

Message Octobre 5th, 2009, 2:53 pm

PolishHurricane a écrit:
Son bon pour utiliser une DTD, personnellement j'utilise celui strictes pour tout, et il résout un grand nombre de problèmes dans le long terme. Généralement, je n'aime pas de jouer avec d'essayer de connaître le rapport hauteur / largeur du navigateur, et tout ça, parce que je préfère le liquide de type choses. À mon avis, ce n'est pas très fiable.


Ouais, je suis d'accord en gros, j'essaie d'utiliser XHTML 1.0 Strict tout le temps maintenant, et préfèrent des pourcentages aux pixels. J'étais un tout petit peu dérouté par ce point - votre explication (que le corps est vide) ne couvre cependant pas pourquoi la réponse serait correct sans la DTD (même si le corps est vide) - Je pense qu'il est aveugle a à faire avec le navigateur le traitement d'une demande préalable supplémentaire, et ce retard affecte parfois, le moment...
Image
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Octobre 5th, 2009, 3:33 pm

Avez-vous essayer juste hauteur? Je crois que la hauteur de défilement est de vous donner la différence entre la hauteur effective et la hauteur de la fenêtre (mai qui n'existent même pas sur l'objet document). Aussi, par curiosité, y at-il quelque raison que ce qu'il a à valider strict? Pourquoi ne pas changer de transition et voir si elle valide ensuite?
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Octobre 5th, 2009, 3:37 pm

Cela n'a rien à voir avec les retards. Ses parce que le navigateur est exécuté en Quirks Mode Lorsque vous omettez le DTD. Les documents qui n'ont pas de définition de type de document ne sont pas définis pour le navigateur comme quelque chose, ils peuvent faire ce qu'ils s'il vous plaît avec elles son aussi simple que cela. Il n'a à voir avec le navigateur, mais un navigateur ne devrait même pas être tenus de faire n'importe quoi avec un document HTML qui n'a pas de DTD en premier lieu. Dans le cas de Firefox Il essaie d'être rétro-compatible, qui, si quelque chose est un luxe. Im Im ne this pas un expert en JavaScript, mais ce que je suppose que c'est le code que vous avez écrit, de retour dans la journée aurait saisi la hauteur des documents entiers, mais ces jours, dans FireFox il juste attrape la hauteur de l'élément «corps document.body" , qui est 0, parce que vous n'avez rien dans votre corps. Essayez de mettre le mot "test" dans votre corps, vous verrez que son ordre de 20 pixels (avec la DTD).

Fondamentalement, ce que vous faites en l'exécutant sans DTD et à dire "Oh mais il fonctionne sans la DTD n'est pas pertinente. Parce thats pas comment vous faites docs web et vous ne devriez pas avoir été prise que le Web doc sans DTD en premier lieu AT ALL.

Explication simple pour (document.body.scrollHeight):
En mode quirks = la hauteur du document.
En mode standard est la hauteur de l'élément <body>.

Peut-être ceux-ci vous aider:
https://developer.mozilla.org/en/Mozill ... ds_mode.3f
https://developer.mozilla.org/en/Mozill ... e_Behavior
http://www.quirksmode.org/ (Site intéressant un développeur de mesure)

Oh and BTW...

graphixboy a écrit:
...Aussi, par curiosité, y at-il quelque raison que ce qu'il a à valider strict? Pourquoi ne pas changer de transition et voir si elle valide ensuite?


Il n'a pas de valider à la stricte, il fonctionnera avec tout type de DTD. Même avec: <! DOCTYPE html>, il vient de se doter de normes mode activé.
There's no place like 127.0.0.1, badass part is now it's ::1
  • mk27
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Juin 09, 2009
  • Messages: 334
  • Status: Offline

Message Octobre 5th, 2009, 3:54 pm

PolishHurricane a écrit:
Cela n'a rien à voir avec les retards. Ses parce que le navigateur est exécuté en Quirks Mode Lorsque vous omettez le DTD.


Bon maintenant qui a du sens! Merci, PolishHurricane!

J'ai testé votre code de poste #2, auquel on donne une valeur correcte dans FF mais pas (surprise, surprise) dans IE7. PLUS elle ne valide pas réellement!

Mais aucun cri de gros. Je pense Ill s'en tenir à des pourcentages et d'être heureux ;)

Quote:
Fondamentalement, ce que vous faites en l'exécutant sans DTD et à dire "Oh mais il fonctionne sans la DTD n'est pas pertinente. Parce thats pas comment vous faites docs web et vous ne devriez pas avoir été prise que le Web doc sans DTD en premier lieu AT ALL.


Yeah, yeah, yeah...:roll: Hey check my sig Nouveau!
Image
  • PolishHurricane
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Fév 17, 2005
  • Messages: 1585
  • Status: Offline

Message Octobre 5th, 2009, 5:57 pm

mk27 a écrit:
J'ai testé votre code de poste #2, auquel on donne une valeur correcte dans FF mais pas (surprise, surprise) dans IE7.


C'est ce que IE ne vers des sites Web...:microwave2:

mk27 a écrit:
PLUS elle ne valide pas réellement!


Pour corriger l'erreur de validation du W3C utiliser ce code:

Code: [ Select ]
<!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" xml:lang="en" lang="en" id="html">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
<script type="text/javascript">
function getHeight()
{
var H = (navigator.appName == "Microsoft Internet Explorer") ? document.documentElement.scrollHeight : document.getElementById('html').scrollHeight;
alert(H);
}
</script>
</head>
<body onload="getHeight(); ">
</body>
</html>
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" id="html">
  3. <head>
  4. <title>Test</title>
  5. <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
  6. <script type="text/javascript">
  7. function getHeight()
  8. {
  9. var H = (navigator.appName == "Microsoft Internet Explorer") ? document.documentElement.scrollHeight : document.getElementById('html').scrollHeight;
  10. alert(H);
  11. }
  12. </script>
  13. </head>
  14. <body onload="getHeight(); ">
  15. </body>
  16. </html>
There's no place like 127.0.0.1, badass part is now it's ::1

Afficher de l'information

  • Total des messages de ce sujet: 7 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 77 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC