Fehler in Firefox?
Ferby
- browser
Hallo,
Ich habe als versehen einen Fehler gemacht statt </a> habe ich <a/> geschrieben:
-----
<style type="text/css">
a:link { text-decoration:none;}
a:visited { text-decoration:none; color:#0000FF;}
a:hover { text-decoration:underline;}
a:active { color:#FF0000;}
</style>
<a href="test.html">Alle drei Texte<a/> werden unterstrichen und <a href="test.html">beim anklicken rot.</a>
-----
Schaut euch das mal mit Firefox an und geht mit der Maus drüber und klickt drauf. Warum stellt das Firefox so dar? Die Links funktionieren auch. Ich verstehe nicht warum der Text zwischen den Links auch beim drübergehen unterstrichen und beim anklicken rot wird aber kein Link ist.... ihr????
Ferby
Hi,
Schaut euch das mal mit Firefox an und geht mit der Maus drüber und klickt drauf. Warum stellt das Firefox so dar?
der Code ist - wie Du ja weißt - fehlerhaft. Daher muss der Browser eine Fehlerkorrektur durchführen, die im Fall von Mozilla[1] folgendes Ergebnis liefert:
<a href="test.html">Alle drei Texte</a><a> werden unterstrichen und </a><a href="test.html">beim anklicken rot.</a>
<a> ohne href-Attribut ist kein Link, aber ein Element - ergo ist die Pseudo-Klasse :link nicht zutreffend, :hover jedoch schon.
Cheatah
[1] Firefox wird vermutlich nicht anders reagieren.
Hallo,
ich wußte nicht das ein Browser Fehler ausbessert, danke jetzt weiß ich´s.
Ferby
Hallo,
der Code ist - wie Du ja weißt - fehlerhaft. Daher muss der Browser eine Fehlerkorrektur durchführen, die im Fall von Mozilla[1] folgendes Ergebnis liefert:
<a href="test.html">Alle drei Texte</a><a> werden unterstrichen und </a><a href="test.html">beim anklicken rot.</a>
Wieso eigentlich? Ich hätte jetzt folgendes erwartet:
<a href="test.html">Alle drei Texte</a><a></a> werden unterstrichen
und <a href="test.html">beim anklicken rot.</a>
Grund:
Wenn man nur ein <a/> notiert, macht Firefox ein <a></a> draus,
was ja korrekt ist. Ist ein vorangehendes <a> noch nicht geschlossen,
wird erst noch ein </a> vorangestellt. Damit würde sich </a><a></a>
ergeben.
Wieso aber taucht bei obigem Beispiel das abschließende "</a>" gar
nicht bzw. erst vor dem letzten <a href="..."> auf?
Gruß
Slyh
Hi,
Wieso eigentlich?
mich hat es auch etwas gewundert. Ich nehme an, es rührt daher, dass <a> nicht EMPTY sein kann, und somit der Endslash für einen Gecko ohne Wirkung sein muss. Folglich wurde das Element nur geöffnet, nicht geschlossen; der nächste <a>-Tag schließt es, weil <a> nicht in <a> geschachtelt werden kann.
Cheatah
Moin,
mich hat es auch etwas gewundert. Ich nehme an, es rührt daher, dass <a> nicht EMPTY sein kann
Also das wage ich dann doch zu bezweifeln. <a name="foo"></a> hat ganz sicher seine Berechtigung. Der Grund wird vielmehr sein, dass der Gecko im HTML- und nicht im XML-Modus war. Da ignoriert er soweit ich das sehen kann grundsätzlich />-Konstrukte und interpretiert ein <foo/> als wäre <foo> im Code. (Um dann je nach Definition des Elementes implizit gleich wieder ein <foo></foo> draus zu machen, wie bei <img> beispielsweise.)
In HTML ist das so aber eh nicht erlaubt, da wäre <a/>/ korrekt (und der Validator versucht auch das so zu interpretieren, beschwert sich dann aber über das fehlende zweite /) und gleichbedeutend mit <a>></a> (auch wenn das kein Browser hinkriegt).
Hi,
mich hat es auch etwas gewundert. Ich nehme an, es rührt daher, dass <a> nicht EMPTY sein kann
Also das wage ich dann doch zu bezweifeln. <a name="foo"></a> hat ganz sicher seine Berechtigung.
<element></element> ist zwar leer, aber nicht EMPTY[1] - das ist nur <element /> ;-) Soll heißen: End-Tag required.
Der Grund wird vielmehr sein, dass der Gecko im HTML- und nicht im XML-Modus war. Da ignoriert er soweit ich das sehen kann grundsätzlich />-Konstrukte
Okay, diese Beobachtung fehlt mir bisher (mangels Tests). Das ist eine gute Erklärung.
Cheatah
[1] Kurz oberhalb von http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.3.3.1: '[...] the content model "EMPTY", this is strengthened to the rule that the end tag *must* be omitted.'