Felix: Qualifizierter Tag-Name

Hallo,

ist es möglich, mit JavaScript den qualifizierten Namen eines Tags zu ändern, bzw. wenigstens darauf zuzugreifen? <element>.tagName gibt ja nur den lokalen Namen zurück.
Ich brauche das sowohl für den IE als auch FF.

Beispiel:
aus test:p will ich <p> machen.

Grüße
Felix

  1. Hallo Felix.

    aus test:p will ich <p> machen.

    Du könntest document.getElementsByTagNameNS verwenden, um auf das jeweilige p-Element aus dem test-Namensraum zuzugreifen.

    Dann könntest du in einer Schleife alle Kindknoten durchlaufen, http://de.selfhtml.org/javascript/objekte/node.htm#clone_node@title=klonen und in das <http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=neu erstellte> p-Element http://de.selfhtml.org/javascript/objekte/node.htm#append_child@title=einfügen.

    Nun könntest du das ursprüngliche test:p-Element durch das neue p-Element http://de.selfhtml.org/javascript/objekte/node.htm#replace_child@title=ersetzen.

    Ich brauche das sowohl für den IE als auch FF.

    Problem hierbei: der IE kennt die getElementsByTagNameNS-Methode (noch) nicht.

    Aber weder Firefox noch IE stellen sich quer, wenn per getElementsByTagName('test:p') auf das Element zugegriffen wird.

    Einen schönen Dienstag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
    1. Hallo Ashura,

      Du könntest document.getElementsByTagNameNS verwenden, um auf das jeweilige p-Element aus dem test-Namensraum zuzugreifen.

      Dann könntest du in einer Schleife alle Kindknoten durchlaufen, http://de.selfhtml.org/javascript/objekte/node.htm#clone_node@title=klonen und in das <http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=neu erstellte> p-Element http://de.selfhtml.org/javascript/objekte/node.htm#append_child@title=einfügen.

      Nun könntest du das ursprüngliche test:p-Element durch das neue p-Element http://de.selfhtml.org/javascript/objekte/node.htm#replace_child@title=ersetzen.

      Ich brauche das sowohl für den IE als auch FF.

      Problem hierbei: der IE kennt die getElementsByTagNameNS-Methode (noch) nicht.

      Aber weder Firefox noch IE stellen sich quer, wenn per getElementsByTagName('test:p') auf das Element zugegriffen wird.

      Ok. Da ich aber nicht weiß, welche Namensräume zu welchen Tags gehören, müsste ich dann jeden Tag präventiv ersetzen, um wirklich alle Namensräume wegzubekommen. Alternativ habe ich auch an outerHTML und replace() gedacht, nur gibt es da wieder Probleme mit dem Firefox :-(
      Naja, werde mal testen wie das von der Performance her ist.

      Felix

  2. Hallo,

    ist es möglich, mit JavaScript den qualifizierten Namen eines Tags zu ändern, bzw. wenigstens darauf zuzugreifen? <element>.tagName gibt ja nur den lokalen Namen zurück.
    Ich brauche das sowohl für den IE als auch FF.

    Beispiel:
    aus test:p will ich <p> machen.

    Die Node-Eigenschaft prefix sollte »test« enthalten, die Eigenschaft namespaceURI die entsprechende Namespace-URI.

    prefix ist gemäß DOM 2 schreibbar, aber ob du das mit null oder "" überschreiben kannst, müsstest du prüfen. Ansonsten geht das Überfahren eines Elements in einen anderen Namespace wohl nur durch das Ersetzen mit einem neuen Element.

    Soweit ich weiß kann MSIE noch kein DOM mit Namespaces, aber er nimmt dann halt einfach test:p als Elementnamen an, damit sollte sich auch arbeiten lassen.

    Vage Vermutung: Wahrscheinlich versuchst du gerade das Problem genau an der unpassendsten Stelle anzupacken.

    Mathias