Diese Schreibmethode ist auch die sogenannte selbstschließende Methode, die in XML völlig legal ist."/> Diese Schreibmethode ist auch die sogenannte selbstschließende Methode, die in XML völlig legal ist.">
Heim >Web-Frontend >CSS-Tutorial >Analyse der Nachteile der selbstschließenden Schreibmethode von XHTML Tags_Experience Exchange
Wenn Sie mit XML-bezogener Entwicklung vertraut sind, sind Sie vielleicht mit dieser Schreibweise vertraut. Wenn Sie denken, dass jedes Element in XML, das keine untergeordneten Knoten enthält, auf diese Weise geschrieben werden kann, können auch Tags ohne Inhalt in XHTML geschrieben werden Hier entlang. Natürlich ermöglicht XHTML theoretisch das Schreiben jedes Tags in einer selbstschließenden Methode. Die Browserkompatibilität hat jedoch ein neues Problem mit sich gebracht, nämlich dass der IE die selbstschließende Schreibmethode einiger Tags nicht korrekt erkennen kann.
Bitte versuchen Sie, den folgenden XHTML-Code einzugeben und ihn im IE zu durchsuchen: <strong><font face="新宋体" size="3"><p>hello <script type="text/javascript" /> world</p></font></strong>
, Sie werden feststellen, dass Sie vorne nur das Hallo sehen, aber nicht die Welt hinten. Das ist völlig unerklärlich. Viele Menschen sind möglicherweise auf dieses Problem gestoßen und haben mehrere Stunden damit verbracht, konnten aber immer noch keine vernünftige Erklärung finden.
Die Erklärung stammt aus einem anderen ähnlichen Code: <strong><font face="新宋体" size="3"><p>hello <textarea /> world</p></font></strong>
Können Sie den Anzeigeeffekt im IE sehen und eine vernünftige Erklärung erhalten? Wir können sehen, dass das „Hallo“ vorne normal angezeigt wird, während die Welt hinten im Textbereich angezeigt wird. Dies beweist, dass der IE nicht richtig erkennt, dass sich der Textbereichs-Tag selbst geschlossen hat. Stattdessen behandelt er den folgenden Inhalt als Textbereich, wenn es nicht interner Inhalt ist.
Zu diesem Zeitpunkt verstehen wir, warum der vorherige Code die Welt dahinter nicht sehen kann, da er als Teil des Skripts erkannt wird. Dies zeigt, dass wir bei Verwendung von XHTML die selbstschließende Schreibweise nicht so frei verwenden können wie XML. Nur wenige Tags, die nicht geschlossen werden müssen, können am besten paarweise verwendet werden, auch wenn dies der Fall ist keine geschlossene Schreibweise haben.
Abschließend muss ich alle daran erinnern, dass der IE tatsächlich nicht der einzige mit schwachen Parsern ist. An vielen Stellen können Probleme auftreten, die durch lose Parser verursacht werden. Daher müssen wir beim Schreiben von XHTML immer noch einige Vererbungen berücksichtigen Aus alter Gewohnheit kann man es nicht einfach wie echtes XML schreiben, weil man denkt, dass es den Standards entspricht. Glauben Sie es nicht? Dann versuchen Sie es mit einem anderen: <strong><font face="新宋体" size="3"><p>hello <br></br> world</p></font></strong>
, achten Sie auf den Anzeigeeffekt in IE und Opera.
Update: Einige Leser sind der Meinung, dass die von mir angegebenen Beispiele nicht der XHTML-Spezifikation entsprechen. Lesen Sie daher bitte zuerst die XHTML-Spezifikation . Die chinesische Übersetzung des Abschnitts Leere Elemente lautet wie folgt: „Leere Elemente müssen entweder ein schließendes Tag haben oder mit /> enden, wie zum Beispiel
oder < ;hr> . Informationen zur Sicherstellung der Abwärtskompatibilität mit HTML4-Browsern finden Sie im HTML-Kompatibilitätsstandard, der auch in der Spezifikation enthalten ist. zeigt, dass die Schreibmethode von
der XHTML-Spezifikation entspricht, aber nicht mit dem HTML4-Standard kompatibel ist. Ist XHTML also mit HTML4 kompatibel? Schauen wir uns den Abschnitt Kompatibilitätsprobleme an. Die chinesische Übersetzung lautet wie folgt: „Obwohl XHTML1.0-Dokumente nicht unbedingt mit vorhandenen Browsern kompatibel sein müssen, ist dies in der Praxis nicht schwierig „Daher schreibt XHTML nicht vor, dass Dokumente abwärtskompatibel sein müssen. Die von mir angegebenen Beispiele sind alle legale XHTML-Dokumentfragmente und sie können alle den W3C Markup Validation Service.
Erneut aktualisieren: