@@Gunnar Bittersmann:
eine andere Schreibweise für 'el[i].lang' ist 'el[i]["lang"]'.
Diese wäre auch für das 'xml:lang'-Attribut zu gebrauchen
Nicht im Firefox. (Grmpf, hätte ich erstmal testen sollen.)
Da kommste wohl um eine doppelte Abfage nicht drumrum:
var lang = element.getAttribute("xml:lang") || element["xml:lang"];
Mit der Abfrage nach 'lang'-Attribut kombiniert ('xml:lang' hat Vorrang):
var lang = element.getAttribute("xml:lang") || element["xml:lang"] || element.lang;
Das brauchst du aber nur für XHTML-Dokumente, für HTML reicht
var lang = element.lang;
Die Unterscheidung, ob es XHTML oder HTML ist, kannste anhand des in XHTML vorhandenen 'xmlns'-Attributs des 'html'-Elements vornehmen und, damit du sie nur einmal tätigen musst, deren Ergebnis in einer Variablen speichern:
var isXHTML = !!document.body.parentNode.getAttribute("xmlns");
Genaugenommen müsstest du aber auch prüfen, ob XHTML als XML verarbeitet wird, da bei der Verarbeitung als HTML das 'xml:lang'-Attribut keinerlei Wirkung hat. Das ist möglich im XHTML-Dokument:
<script type="text/javascript">[code lang=javascript]var isXML = ("ä" == "ä");
<script>[/code]
Beides zusammen:
var isXHTMLplusXML = isXHTML && isXML;
Später damit dann
var lang = isXHTMLplusXML ? element.getAttribute("xml:lang") || element["xml:lang"] || element.lang : element.lang;
Live long and prosper,
Gunnar
„Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)