ecklvo: Leerzeichen als NodeValue integrieren

hallo zusammen!
Ich habe ein unangenehmes Problem:

Ich hab' auf einer Seite einen Link der mit einem maskierten Leerzeichen beginnt <a href="#" id="link_nova" onmouseout="link_news_out();" onmouseover="link_news_hover();"> news*</a>,
dessen Inhalt ich bei mouseover ändere und bei mouseout wieder in den Ursprungszustand zurückgehen lasse.

function link_news_hover() {
   if(document.getElementById) {
    document.getElementById("link_nova").firstChild.nodeValue = "archiv";
   }
   else {}
  }

function link_news_out() {
   if(document.getElementById) {
document.getElementById("link_nova").firstChild.nodeValue = " news*";
   }
   else {}
  }

Doch übernehmen mir die Browser das Leerzeichen am Beginn nicht (sie stellen den Link als "news*" dar anstatt " news*", und einen maskierten non-breaking space kann ich in Javascript nicht einfügen.

Weiß jemand Abhilfe? Wäre mir eine große Hilfe...

  1. anstatt link_nova steht natürlich link_news usw.
    Tippfehler!

  2. Hallo,

    document.getElementById("link_nova").firstChild.nodeValue = " news*";

    Doch übernehmen mir die Browser das Leerzeichen am Beginn nicht (sie stellen den Link als "news*" dar anstatt " news*", und einen maskierten non-breaking space kann ich in Javascript nicht einfügen.

    Doch.

    Das   hat den CharCode 160 oder Hexadezimal A0. Der muss in ein Zeichen gewandelt werden. Das macht unescape().

    document.getElementById("link_nova").firstChild.nodeValue = unescape("%A0") + "news*";

    viele Grüße

    Axel

    1. Hallo!

      Danke erstmal für Deine Hilfe!
      Das ist sicher die richtige Spur, nur zeigt mir der Firebird 0.6 unter XHTML transitional das nicht an.
      IE6 schon.

      document.getElementById("link_nova").firstChild.nodeValue = unescape("%A0") + "news*";

      Ich denke, dass das daran liegt, dass Firebird unescape entweder nicht unterstützt oder nicht als nodeValue akzeptiert.
      Außerdem steht in SelfHTML dass unescape in Zukunft ersetzt werden soll.

      Viele Grüße, e.

      1. Hallo,

        Danke erstmal für Deine Hilfe!
        Das ist sicher die richtige Spur, nur zeigt mir der Firebird 0.6 unter XHTML transitional das nicht an.
        IE6 schon.

        document.getElementById("link_nova").firstChild.nodeValue = unescape("%A0") + "news*";

        Ich denke, dass das daran liegt, dass Firebird unescape entweder nicht unterstützt oder nicht als nodeValue akzeptiert.
        Außerdem steht in SelfHTML dass unescape in Zukunft ersetzt werden soll.

        Mein Mozilla 1.3.1 macht es ohne Probleme. Sollte Firebird unescape() wirklich nicht mehr unterstützen, müssten sich die Mozilla-Entwickler fragen lassen, was der Ersatz sein soll. Die Funktion decodeURI(), die in SelfHTML als Ersatz angegeben wird, hat nämlich ganz andere Aufgaben, ist also _kein_ Ersatz für unescape(). Die Möglichkeit mit JavaScript Zeichencode aus CharCodes zu erzeugen wäre damit im Firebird ersatzlos gestrichen. Schade eigentlich.

        viele Grüße

        Axel