2009-07-23 3 views
2

Ich habe kürzlich ein seltsames Auftreten in IE8 & FF gefunden.IE8 & FF XHTML Fehler oder schlecht geformte Spanne?

Die Designer wo js mit einigen span-Tags für das Layout dynamisch erstellen (sie auf einigen Registerkarten abgerundete Ecke Grafiken wurden Platzierung). Nun ist die xhtml, in js, sah wie folgt aus: < span class =“Left“/> < span class =“Right“/> und funktionierte perfekt!

Wie wir alle dynamischen Elemente in js Rendering wissen sehr rechenintensiv sein kann, so zog ich die Elemente aus js in die Seite Quelle, genau wie oben.

... und es hat nicht funktioniert ... nicht nur, dass es nicht funktioniert, es stürzt ab IE8.The fix einfach war, die enge Spanne in dh setzen: < span class =“Left“ > </> Spanne

ich bin ein bisschen durch diese verwirrt. Erstens, soweit ich weiß < span class = "leftcorner"/> ist einwandfrei gültig XHTML! Zweitens funktioniert es dynamisch, aber nicht in XHTML?!?!?

Kann jemand Licht darauf werfen oder ist es einfach ein weiteres seltsames Vorkommen von Browsern?

Antwort

0

Siehe Ich denke, dass eine der Antworten auf Is writing self closing tags for elements not traditionally empty bad practice? Ihre Frage beantworten wird.

+0

Dieser WordPress-Artikel ist falsch - es gibt keine Anforderung für Span-Elemente, Inhalt zu haben. – Quentin

+0

Wenn ich es versuche, ist der W3C Validator bereit zu sagen, dass etwas mit einem leeren '' oder sogar mit einem '' "erfolgreich als XHTML 1.1" überprüft wird. – ChrisW

+0

Also werde ich den ersten Satz meiner Antwort löschen. – ChrisW

2

unterstützen die gängigen Browsern nur eine kleine Teilmenge von selbstschließenden Tags. (Eine vollständige Liste finden Sie unter this answer.)

Je nachdem, wie Sie die Elemente in JS erstellt haben, hat die JavaScript-Engine wahrscheinlich ein gültiges Element zum Platzieren im DOM erstellt.

1

Ich hatte ähnliches Problem mit a Tags im Internet Explorer.

Das Problem war meine Links so aussah (es war ein Symbol mit der CSS gesetzt, so habe ich den Text in es nicht brauchen:

<a href="link" class="icon edit" /> 

Leider gibt es in IE wurden diese Links nicht angezeigt . sie haben in

<a href="link class="icon edit">&nbsp;</a> 

Format (Abfahrt leer Text arbeitete nicht so gut, damit ich &nbsp; dort gesetzt) ​​sein. also, was ich tat, das ich ein paar zusätzliche JS Linien hinzufügen, es zu beheben, wie ich ‚didn Ich möchte mein ganzes HTML nur für diesen Browser ändern (ps. Ich benutze jQuery für meine JS).

1

IE unterstützt insbesondere XHTML nicht. Das heißt, es wird nie die richtigen XML-Parserregeln auf ein Dokument anwenden - es wird es als HTML behandeln, sogar mit dem richtigen DOCTYPE und allem. XHTML ist jedoch nicht immer SGML. In einigen Fällen (wie <br/>) IE kann es herausfinden, weil es bereit ist, Tagsoup zu parsen, und nicht nur gültige SGML. In anderen Fällen bedeutet dasselbe "tagsoup" -Verhalten jedoch, dass /> nicht als selbst schließender Tag-Terminator behandelt wird.

Im Allgemeinen ist mein Rat, nur HTML 4.01 Strict zu verwenden. Auf diese Weise wissen Sie genau, was Sie erwarten können. Und es hat wenig Sinn, XHTML in Browser einzubinden, wenn sie es ohnehin als HTML behandeln ...

0

XHTML ist nur XHTML, wenn es als application/xhtml + xml verwendet wird - ansonsten, zumindest was Browser betrifft, ist es HTML und wird als Tag-Suppe behandelt.

Als Ergebnis bedeutet <span /> "Eine Start-Start-Marke" und nicht "Ein komplettes Segment-Element". (Technisch sollte es "Ein Anfangsbegrenzungszeichen und ein Größer-als-Zeichen" bedeuten, aber das ist eine andere Geschichte).

Die XHTML-Spezifikation sagt Ihnen, was Sie tun müssen, um Ihr XHTML als HTML zu parsen. Eine der Regeln ist "For non-empty elements, end tags are required". Die list of elements enthält eine Kurzreferenz, welche leer sind und welche nicht.

Verwandte Themen