Hallo,
Guten Tag!
In einem Script muss ich aus HTML-Tags die Attribute "lang" oder "xml:lang" auslesen. Funktioniert auch prima - nur nicht in meinem <sarkasmus>l_IE_blings</sarkasmus> Browser.
Hmm, bist du dir im Klaren, was du da versuchst?
Du hast eine XHTML-Seite als text/html, das bedeutet: Dem Browser ist das ganze XHTML-Gedöhns egal, er wendet durch und durch HTML-Regeln an.
Du setzt jetzt irgendwo ein willkürliches Attribut, das nicht Teil von HTML ist, setzt das Dokument den Browsern das XHTML als HTML vor und wunderst dich, dass ein Browser, der ohnehin nur HTML, nicht XHTML kann, dein willkürliches Attribut nicht korrekt auslesen will, genau dann, wenn es nicht da ist, und das auch nur bei bestimmten Elementen. Ja nee, is klar... ;)
Wieso willst du überhaupt »xml:lang« auslesen - für HTML und HTML-kompatible XHTML-Dokumente ist ohnehin »lang« Pflicht und auch praktisch ratsam.
Wenn ich nämlich bei einem TABLE-Element, welches kein 'xml:lang'-Attribut besitzt, genau dieses Abfrage, gibt der IE (6 und 7) nicht den Wert 'null' zurück, wie er es bei allen anderen Elementen tut, sondern wirft den Fehler "Invalid Argument" aus.
Ja, seltsam - ich glaube nicht, dass es dafür eine rationale Erklärung gibt.
Wenn das ein IE-Bug ist, kann man den bei MS irgendwo einsenden?
Das sind eigentlich bekannte Schwächen. Ganz falsch ist das ja nicht - kein korrektes Attribut darf m.W. im DOM »xml:lang« heißen. getAttribute("xml:lang") ist überhaupt nur ein Workaround für DOM 1 und HTML, welche nicht Namespace-kompatibel sind. Sprich, was du machst, hat das DOM nie offiziell vorgesehen. DOM 2 führt dazu getAttributeNS ein. Das funktioniert allerdings auch nur in XHTML-Dokumenten, die als solche verarbeitet werden - in HTML gibts keine Namespaces. Die übliche Aufregung über IE ist doch etwas künstlich, schließlich gibt es kein zu erwartendes Verhalten.
Mathias