Liebold: Per Javascript auf XML-Attribute zugreifen

Hallo,

ich habe folgendes Problem mit JavaScript und XHTML:

<a href="#" onclick="alert(this.lang);return false;" lang="de" xml:lang="de">test!</a>

funktioniert wunderbar und gibt "de" aus.

Doch wenn ich

<a href="#" onclick="alert(this.xml:lang);return false;" lang="de" xml:lang="de">test!</a>

eingebe, gibt es einen Fehler im Script - anscheinend funktioniert der Doppelpunkt nicht.

Weiss jemand wie man ordnungsgemaess den Wert von xml:lang per JavaScript abfragen kann?

Vielen Dank!

Gruss,
Thorsten

  1. Hallo,

    Weiss jemand wie man ordnungsgemaess den Wert von xml:lang per JavaScript abfragen kann?

    <a href="#" onclick="alert(this.getAttribute('xml:lang'));return false;" lang="de" xml:lang="de">test!</a>

    http://de.selfhtml.org/javascript/objekte/node.htm#get_attribute

    viele Grüße

    Axel

    1. Hallo,

      Weiss jemand wie man ordnungsgemaess den Wert von xml:lang per JavaScript abfragen kann?

      <a href="#" onclick="alert(this.getAttribute('xml:lang'));return false;" lang="de" xml:lang="de">test!</a>

      Wunderbar, damit komme ich weiter, vielen Dank!

      Gruss,
      Thorsten

  2. Hallo,

    Weiss jemand wie man ordnungsgemaess den Wert von xml:lang per JavaScript abfragen kann?

    Wieso hast du das vor, reicht das lang-Attribut nicht aus? Der »ordnungsgemäße« Weg wäre gemäß DOM 3 folgender:

    elementobjekt.getAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang')

    Das kann aber kein Browser außer Gecko im XHTML-Modus. Das besagte getAttribute('xml:lang') können zumindest im Gecko und MSIE, das sollte auch gemäß den DOM-Core-Standards erlaubt und möglich sein. Im Opera gibt es in JavaScript nur lang (elementobjekt.lang oder elementobjekt.getAttribute('lang')), egal, ob xml:lang oder lang abgegeben wurde. xml:lang ist dort also nicht ausdrücklich abfragbar.

    Da du in HTML-kompatiblem XHTML sowieso immer das lang-Attribut angeben solltest, stellt sich die Frage doch gar nicht (höchstens bei setAttribute)?

    Mathias