Frage

ein großes Vermächtnis Projekt Gegeben ASP.NET verwendet, JavaScript, CSS, etc, Technologien, ich frage mich, ob die DOCTYPE der Internetseiten zu ändern, sagen wir, aus HTML 4.0 Transitional 1.0 Transitional auf XHTML (oder umgekehrt) in irgendeiner Weise die JavaScript-Funktionen der Internetseiten brechen könnte.

Es gibt viele Artikel und Diskussionen darüber, wie verschiedene DOCTYPEs beeinflussen die (CSS) Rendering von Seiten, aber ich kann nicht scheinen, etwas ähnliches auf dem Thema zu finden beliebigen Code zu brechen.

Ich bin auf der Suche nach Links zu Artikeln über Dinge in der Regel zu achten, um besser auf potenzielle Probleme zu erkennen Code in bestehenden und Vermeidung von Problemen zu schaffen, wenn neuen Code zu schreiben.

War es hilfreich?

Lösung

Ob DOCTYPE ändern, werden alle JavaScript-Funktionen brechen hängt wirklich davon ab, wie defensiv sind diese Funktionen ausgelegt:)

Wenn beispielsweise in Dokument wiedergegeben wird Quirksmodus , document.body (BODY) wird zu einem so genannten "root element"; wenn im Standardmodus wiedergegeben, ist das Stammelement in der Regel eine document.documentElement (HTML). Dies ist ein ziemlich wesentlicher Unterschied. Wenn ein Skript, das eine Größe Browser-Bildschirm bestimmt immer clientWidth / clientHeight Eigenschaften aus den document.documentElement abfragt, wird es meldet offensichtlich falsche Ergebnisse in Quirks-Modus (da IIRC, document.documentElement.clientWidth/clientHeight Dimensionen von HTML-Elemente darstellen würde, anstatt Bildschirm ist).

Die meisten der JS-Bibliotheken in der Regel explizit angeben, ob Quirksmode unterstützt wird. (Wir - Prototype.js - zum Beispiel, nicht Quirks-Modus unterstützen)

Apropos HTML vs XHTML , um für Browser-Dokument als XHTML zu machen, müssen Sie vor allem dazu dienen, es mit dem richtigen "Content-Type" Header (das heißt application / xhtml + xml). Wenn Sie nur Doctype eines XHTML ändern, aber nach wie vor Dokument dienen als „text / html“, die meisten Browser Ich weiß, wird noch analysieren (und macht) als HTML-Dokument .

Hinweis, dass bisher nicht IE nicht „real“ XHTML Inhalt verstehen, weshalb Dokumente als text / html (mit HTML4.01 Doctype) dient, ist eine empfohlene Weg zu gehen (es sei denn IE nicht unter unterstützten Browsern ist, natürlich).

Soweit DOM Besonderheiten in „echten“ XHTML-Dokumenten, ich habe gehört, dass einige Dinge, wie document.write „nicht funktionieren“, und dass der Zugriff auf Knoten Attribute sollen immer über getAttribute/setAttribute durchgeführt werden (anstatt über einfachere Eigenschaftenaccessoren). IIRC, gibt es auch einige Probleme mit innerHTML.

Der Mangel an Informationen über DOM in „echten“ XHTML-Dokumenten ist wohl auch wegen der Unbrauchbarkeit in Dokumenten / Anwendungen für die allgemeine Web (das heißt IE Mangel an Unterstützung für sie).

Andere Tipps

Wenn Sie die DTD verwenden:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

dann Ihre Website ist in Quirks-Modus in IE und fast-Standards-Modus in modernen Browsern, und weil die xhtml 1.0 transitional dtd zwingt die Seite im Standardmodus, dort zu sein Layout-Probleme sein werden und mögliche Probleme in der Javascript (vor allem in IE), da es einige signifikanten Unterschiede zwischen dem, wie der DOM in Macken vs Standards gemacht wird.

Allerdings, wenn die HTML 4.01 DTD enthalten die System-ID:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

Es sollte bereits im Standardmodus sein. Sie können durch die Abfrage ‚document.compatMode‘ in Ihrer Website überprüfen, wird es CSS1Compat 'sagen, wenn es in Normen ist anders ‚BackCompat‘, wenn im Quirks-Modus.

Ich gehe davon aus Sie gehen einen Content-Type text / html mit XHTML 1.0 Transitional zu dienen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top