# Quirksmode nur bei xhtml?



## Brothers (5. Februar 2008)

hallochen zu später stunde....

ich bin dabei ein joomla template zu basteln die sich der bildschirm größe anpasst...

soweit kein problem...ausser microsoft IE...   ...wie immer

habe gelesen das man ab IE 5 eine art von min-width und max-width benutzen kann...


```
width:expression
		(document.body.clientWidth 
		< 500? "500px": "auto" 
		&& 
		document.body.clientWidth 
		> 750? "750px": "auto")}
```

nur muss der IE (meines verstäntnisses nach) *NUR* bei XHTML-Dokumenten im "Quirksmode" sein!



> Der IE muß die Seiten im Quirksmode lesen
> 
> Ist dies nicht der Fall, tendiert der IE 6 zu Abstürzen.  Der IE 5 befindet sich sowieso „von Natur aus“ im Quirksmode (wenn ich falsch liegen sollte, berichtigt mich). Den IE 6 schickt ihr in den Quirksmode, indem ihr im Falle eines XHTML-Dokumentes vor den Doctype den XML-Prolog schreibt (<?xml version="1.0" encoding="utf-8"?>). Andere Möglichkeiten wären z.B. den Doctype ganz wegzulassen oder einen alten Doctype zu benutzen, was aber nicht zu empfehlen ist. Wer seine Internetseiten sowieso auch für den IE 5 optimiert, dürfte also kein Problem damit haben, da in diesem Falle die Extraanweisungen gleichermaßen für den IE 6 benutzt werden können.



Quelle: http://www.april-design.de/css/expressions/

_____________________________________________________________________
_____________________________________________________________________

nun meine fragen...

1. muss der IE bei allen dokumenten im Quirksmode sein oder nur bei xhtml?

2. wenn JA wie und wo binde ich das.... <?xml version="1.0" encoding="utf-8"?>  ...ein?

3. wenn NEIN is das wichtig für mich? (ich benutze joomla v1.0.13)

schon mal ein danke im vorraus...


----------



## hela (5. Februar 2008)

Hallo Brothers,

mach es so wie Jeena Paradies. Dann kannst du den IE6 auch im Standard-Mode laufen lassen.

P.S.
Deine zweite Frage wird im Galileo-OpenBook "Joomla!" im Kapitel "9.2 Das eigene Template" Abschitt "9.2.3 HTML-Bereich" beantwortet. Der XML-Prolog steht dort im Quelltext gleich in der ersten Zeile.





> 01  <?php echo "<?xml version=\"1.0\"?>"; ?>
> 02  <?php
> 03  defined( '_VALID_MOS' ) or die( 'Direct Access to this
> 04     location is not allowed.' );
> ...


----------



## Inspector (5. Februar 2008)

IE und XHTML: Der IE kann, entgegen anderslautenden Gerüchten, XHTML überhaupt nicht verarbeiten. Es macht also keinen Unterschied, ob Du den Quirks-Modus für HTML oder für XHTML brauchst, für den IE ist sowieso Beides nur HTML. 

Das ist auch der Grund dafür, dass der IE, wenn er in der allerersten Zeile statt des DOCTYPE den XML Prolog vorfindet, in den Quirksmode geht. Für HTML ist dieser XML Prolog nicht valide. Da der IE das Dokument aber, auch wenn es .xhtml heisst, als HTML-Dokument behandelt, ist das für den IE also nur ein weiterer merkwürdiger Fehler, den er durch den Quirksmode versucht, irgendwie auszugleichen oder zu ignorieren.

Grundsätzlich gild das auch für alle andeen Browser in ähnlicher Form. Entscheidend dafür, ob es sich bei einem Dokument um eine HTML- oder XML-Datei handelt (und XHTML ist XML), das ist weder der DOCTYPE noch die meta-Information im head-Bereich, sondern der vom Server geschickte http Header. Wenn in dem *text/html* steht, dann ist es eine HTML-Datei. Wenn die Datei dann nach XHTML Syntax aufgebaut ist, dann wird daraus eben nicht eine XHTML-Datei, sondern einfach nur eine fehlerhafte HTML-Datei.

Wenn Du ein Dokument tatsächlich als XHTML behandelt wissen willst, musst Du dafür sorgen, dass der Server den Dokumenttyp richtig angibt. Das wäre für XHTML entweder *application/xhtml+xml* oder *application/xml*, notfalls (aber nur notfalls) auch noch *text/xml*. Dann allerdings kann der IE das Dokument nicht mehr verarbeiten (darstellen), sondern er bietet es zum Download an.


----------



## hela (5. Februar 2008)

Inspector hat gesagt.:


> ... Wenn Du ein Dokument tatsächlich als XHTML behandelt wissen willst, ...


Das will er nicht. Er will dem IE6 nur die min-width- und max-width-Eigenschaft beibringen.


----------

