Martin Naatz: Umlaute im DOM

Hallo zusammen!

Als ich neulich ein frei verfügbares Script zu Erzeugung eines dynamischen Navigationsmenüs für meine Zwecke anpassen wollte bin ich auf das schon bekannte Problem der Umlaute gestossen.
(Nämlich, dass Befehle wie
  document.createTextNode('Qualitätssicherung')
nicht den gewünschten Effekt haben)
Das Problem war zwar nicht so ernst, weil die DOM Browser für die ich schreibe die Eigenschaft innerHTML kennen (z.B. Netscape 6)
Es hatte mich aber doch geärgert und ich dachte: Ach hätte ich doch nur eine Funktion die die Umlautsequenzen decodieren kann! Am besten als Methode von String. Dann fiel der Groschen:

String.prototype.htmlDecode = function () {
    mydiv = document.createElement("div");
    mydiv.innerHTML = this;
    return mydiv.lastChild.nodeValue;
}

Das reichte als Patch aus, um zum Beispiel folgenden Ausdruck möglich zu machen:
alert('Daß es nur so pätscht!'.htmlDecode())

Lustig: das erzeugte div-Objekt muss nirgends angehängt werden!
Schade: das geht nur wenn es innerHTML gibt!
Vorsicht: ich habs nur auf Mozilla 1.0 RC2 und Explorer 5.1 und überhaupt nur auf Macintosh getestet.
Aber witzig ist es schon oder?

  1. Als ich neulich ein frei verfügbares Script zu Erzeugung eines dynamischen Navigationsmenüs für meine Zwecke anpassen wollte bin ich auf das schon bekannte Problem der Umlaute gestossen.
    (Nämlich, dass Befehle wie
      document.createTextNode('Qualitätssicherung')
    nicht den gewünschten Effekt haben)

    Ähm, warum sollte man das auch benutzen wollen?

    1. Als ich neulich ein frei verfügbares Script zu Erzeugung eines dynamischen Navigationsmenüs für meine Zwecke anpassen wollte bin ich auf das schon bekannte Problem der Umlaute gestossen.
      (Nämlich, dass Befehle wie
        document.createTextNode('Qualitätssicherung')
      nicht den gewünschten Effekt haben)

      Ähm, warum sollte man das auch benutzen wollen?

      Warum nicht? ;)
      Nee, mal ernsthaft: Wenn man beispielsweise auf einer fertig geladenen HTML-Seite nachträglich ähm, sagen wir Layers erzeugen wollte, dann wäre createTextNode() die dem DOM entsprechende adäquate Methode um Texte zu erzeugen, die auf den Layers erscheinen können. Brauchst Du ein Beispiel?

      Oder wolltest Du wissen warum ich ä als ä schreibe? Na, weil ich eine Zeichensatzunabhängige Darstellung von Umlauten haben will. Gibt es andere zuverlässige Lösungen?

      Aber eigendlich ging es mir um die Funktion htmlDecode() die ich zum Spass und ohne ernsthafte Sinnfragen zu stellen geschrieben habe. Funktioniert die denn bei Dir?

      1. hi

        Oder wolltest Du wissen warum ich ä als ä schreibe? Na, weil ich eine Zeichensatzunabhängige Darstellung von Umlauten haben will. Gibt es andere zuverlässige Lösungen?

        jup, du schreibst einen gültigen Zeichensatz in den Kopf der Datei und gut is.

        Grüße aus Bleckede

        Kai