Gunnar Bittersmann: Seltsames Verhalten von IE bei getAttribute('xml:lang')

Beitrag lesen

@@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)