Qualifizierter Tag-Name
Felix
- javascript
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
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
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
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