@@nam:
Der IE scheint wirklich beim 'table'-Element kein 'xml:lang'-Attribut haben zu wollen.
Da bleibt wohl nur, per String-Verarbeitung alle 'xml:lang'-Attribute umzubenennen, bspw. in "xml_lang":
document.body.innerHTML = document.body.innerHTML.replace(/xml:lang/g, "xml_lang");
Da du damit nur den Inhalt des 'body'-Elements erreichst, für dessen Elementobjekt die Eigenschaft 'xml_lang' setzen:
document.body.xml_lang = document.body.getAttribute("xml:lang") || document.body["xml:lang"];
('getAttribute()' wäre für Firefox; aber dazu später.)
Und dasselbe fürs Wurzelelement 'html':
document.body.parentNode.xml_lang = document.body.parentNode.getAttribute("xml:lang") || document.body.parentNode["xml:lang"];
Dann funktioniert auch
~~~javascript
var table = document.getElementsByTagName("table")[0];
var lang = table.xml_lang);
alert(lang);
angewandt auf
`<table xml:lang="zxx"><tr><td>Lorem ipsum</td></tr></table>`{:.language-html}
bzw.
`<table><tr><td>Lorem ipsum</td></tr></table>`{:.language-html}
im IE.
Aber nicht anderen Browsern wie Firefox, die für ein ungültiges 'xml\_lang'-Attribut keine entsprechende Eigenschaft für das Elementobjekt anlegen.
Also den ganzen Ramsch per conditional compiling nur für den IE machen (dann wird 'getAttribute()' nicht mer benötigt):
~~~javascript
/*@cc_on
@if (@_jscript)
window.isIE = true;
document.body.innerHTML = document.body.innerHTML.replace(/xml:lang/g, "xml_lang");
document.body.xml_lang = document.body["xml:lang"];
document.body.parentNode.xml_lang = document.body.parentNode["xml:lang"];
@else @*/
window.isIE = false;
/*@end @*/
Und je nach Browser 'xml_lang' bzw. 'xml:lang' abfragen:
~~~javascript
var table = document.getElementsByTagName("table")[0];
var lang = (window.isIE ? table.xml_lang : table.getAttribute("xml:lang"));
alert(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)