2009-05-29 5 views

Antwort

2

Ich weiß von einem Fall, in dem

<div style="clear:both" /> 

in Browsern, die XHTML unterstützen, die div geschlossen ist. Aber IE wird das Div als noch offen behandeln, so dass das Layout später unerwartete Ergebnisse haben kann.

+2

Alle Browser sollten dies tun, wenn XHTML im HTML-Modus gerendert wird - selbstschließende Tags sind eine Eigenschaft von XML, nicht XHTML. Aus diesem Grund empfehlen die HTML-Kompatibilitätsrichtlinien, dass Sie dieses Formular nicht für Elemente verwenden, die sich normalerweise nicht selbst in HTML schließen (wie und
): http://www.w3.org/TR/xhtml1/#C_3 – Miles

+0

@ Meilen Wahr. IIRC, in xHTML selbstschließenden Tags sollte ordnungsgemäß geschlossen werden wie diese "" - das Leerzeichen ist optional, aber eine ausfallsichere für Browser, die nicht den Schrägstrich – hannson

1

Internet Explorer wird Probleme haben, XHTML-Dokumente von XML-Dokumenten zu unterscheiden, wenn der MIME-Typ nicht als text/html angegeben ist. Da HTML 4.01 jedoch vollständig unterstützt wird, entstehen die meisten Probleme durch inkonsistente und nicht standardisierte Implementierungen von Positionierungs-, Layout- und CSS-Eigenschaften. Um Probleme zu vermeiden, schreiben Sie am besten gültiges XHTML und geben Sie einen DOCTYPE an.

A list of all known Internet Explorer Bugs

+0

Writing HTML vermeidet Ereignis mehr Probleme, da Sie nicht erwischt werden Probleme. – Quentin

1
  • Selbstschließender Die Syntax funktioniert nicht (es scheint nur für Elemente zu funktionieren, die in HTML immer leer sind). XML-Serialisierer können <textarea/>, <script/> und ähnliche generieren, die Seiten auf verschiedene Arten aufbrechen (wodurch eine komplizierte Fehlerkorrektur ausgelöst wird und manchmal der Rest der Seite erneut analysiert wird).

  • Explizit geschlossene HTML "leere" Elemente könnten sich merkwürdig verhalten (</br> Einfügungen brechen in IE).

  • <![CDATA[ außerhalb HTML-hardcoded CDATA Elemente werden als ein Tag erkannt. Es hat keinen Einfluss auf das Entkommen und kann einige Inhalte verschwinden lassen.

  • In HTML CDATA Elemente (nämlich <script>) Entitäten werden nicht erkannt. XHTML erfordert <script> if (1 &lt; 2) …, die Syntaxfehler in IE sein wird.

  • Hintergrund von <body> wird anders in IE angewendet werden.

  • Es gibt keine browserübergreifende Syntax für Namespace-fähige Selektoren in CSS.

  • Sie erhalten alle impliziten HTML-Elemente (zB <tbody> in allen Tabellen) und implizit geschlossene Elemente (es ist normalerweise kein Problem, wenn das Dokument gültig ist, aber andere Browser warnen Sie nicht, solange Markup gut ist gebildet).

  • Elemente und Attribute mit Präfixen werden nicht namespaced und erhalten tagName im IE (was auch in XML illegal ist). Sie erhalten auch kein entsprechendes Standardstyling und -verhalten (<xhtml:a> kann kein Link sein).

  • Sie werden sich wie createElementNS (sie in IE nicht existieren) nicht in der Lage sein, Methoden Namespace-aware zu verwenden, wird .tagName in IE groß geschrieben werden, aber nicht in allen Fällen.

  • Elemente und Attribute mit Präfixen werden nicht mit Namespaced versehen und erhalten im IE einen anderen lokalen Namen (der in XML auch nicht zulässig ist).

Dies sind nur Probleme beim Wechsel von XML-Dokument zu HTML. Es gibt so viele Überraschungen, wenn Sie von HTML (d. H. Was alle erwarten und als normales Verhalten annehmen) zu echtem XML, z. document.write funktioniert nicht und macht die meisten Google-Skripts unbrauchbar.

Verwandte Themen