Tina: IE stellt non breaking Hyphen (‑) nicht richtig dar.

Hallo zusammen,

aus einer Datenquelle erhalte ich Texte, die ein non-breaking-hyphen (‑) enthalten. Die Darstellung passt soweit wenn ich die Texte in einem Absatz ausgebe.

Versuche ich jedoch dieses Zeichen in einer <option> auszugeben wird es im IE nicht richtig dargestellt.

Ist das ein IE bug und gibt es hierfür einen Workaround?

Beispielcode:
<select>
 <option value="">&#x2011;</option>
</select>

Danke im Voraus
Grüße
Tina

  1. Hi,

    Ist das ein IE bug

    das vermute ich mal: Die meisten IE-Versionen übergeben die Darstellung eines <select>s an das Betriebssystem. Hierbei geht so manches schief.

    und gibt es hierfür einen Workaround?

    Hm, ein normaler Bindestrich ist in einer <option> bereits non-breaking, also ...

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Verwende einen input vom Typ text und realisiere die Selekt-Funktionalität über JavaScript. Als Fallback machst Du die unschöne Ausgabe über select. Fertig.

      Gruß, LX

      --
      X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: Unusual
      X-Please-Search-Archive-First: Absolutely Yes
    2. OK, Dankeschön.
      leider kann ich daraus keinen normalen Bindestrich machen, da die Inhalte aus einer DB kommen. Da muss ich wohl mit JavaScript ran und das Zeichen durch ein "-" ersetzen.

      Grüße
      Tina

      1. @@Tina:

        leider kann ich daraus keinen normalen Bindestrich machen, da die Inhalte aus einer DB kommen.

        ?? Und wie kommen sie aus der DB auf die Webseite? Doch sicher mit einer serverseitigen Scriptsprache (PHP?) ...

        Da muss ich wohl mit JavaScript ran und das Zeichen durch ein "-" ersetzen.

        ... dann wäre das (PHP) die richtige Gelegenheit für die Umwandlung; nicht erst clientseitig, wo du gar nicht weißt, ob dort überhaupt Scripte ausgeführt werden.

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
        1. ?? Und wie kommen sie aus der DB auf die Webseite? Doch sicher mit einer serverseitigen Scriptsprache (PHP?) ...

          Ich verwende JSPs. Muss ich dann wohl dort machen. Ist halt ein schmutziger hack meiner Meinung nach.

          ... dann wäre das (PHP) die richtige Gelegenheit für die Umwandlung; nicht erst clientseitig, wo du gar nicht weißt, ob dort überhaupt Scripte ausgeführt werden.

          Mit JavaScript gehts gar nicht. Habe ich ausprobiert. Über JavaScript kann ich die Zeichenkette &#x2011; nicht finden.

          Grüße
          T

          1. @@Tina:

            Ich verwende JSPs. Muss ich dann wohl dort machen. Ist halt ein schmutziger hack meiner Meinung nach.

            Warum? Du bereitest die Daten aus der DB zur Darstellung auf. Durchaus legitim, IMHO.

            Aber wenn schon frickeln, dann an der richtigen Stelle!

            Mit JavaScript gehts gar nicht. Habe ich ausprobiert. Über JavaScript kann ich die Zeichenkette &#x2011; nicht finden.

            Natürlich ginge es auch mit JavaScrpit. Du suchst ja nicht die Zeichenkette '&#x2011;', sondern das Zeichen '‑'. Beim Escapen IMMER den Kontext beachten! Der ist hier nicht HTML, sondern JavaScript; also '\u2011'.

            Live long and prosper,
            Gunnar

            --
            Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
            1. Hi,

              Ich verwende JSPs. Muss ich dann wohl dort machen. Ist halt ein schmutziger hack meiner Meinung nach.

              Warum? Du bereitest die Daten aus der DB zur Darstellung auf. Durchaus legitim, IMHO.

              Ich vermute, das "schmutzig" war auf JSP bezogen.

              MfG ChrisB

              --
              "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
            2. Hallo Gunnar,
              wow, hätte ich nicht gedacht. Das mit dem escaping verstehe ich noch nicht ganz. Wieso ist dieses Zeichen anders?

              Natürlich ginge es auch mit JavaScrpit. Du suchst ja nicht die Zeichenkette '&#x2011;', sondern das Zeichen '‑'. Beim Escapen IMMER den Kontext beachten! Der ist hier nicht HTML, sondern JavaScript; also '\u2011'.

              Ich würde es gerne mal mit JavaScript ausprobieren, auch wenn es nicht die bevorzugte Lösung sein sollte. Es interessiert mich einfach, wieso ich nicht nach dem Zeichen suchen kann.

              Die folgende Lösung funktioniert nicht. Kannst Du mir sagen wieso?
              Beim onload wird folgende Funktion aufgerufen:

              function replaceNonBreakingHyphens()
              {
                // hole alle option-Tags
                var optionElements = document.getElementsByTagName('OPTION');
                for (var i=0; i<optionElements.length; i++)
                {
                  var optionLabel = optionElements[i].firstChild.nodeValue;
                  if(optionLabel.match(/\u2011/))
                  {
                    // ersetze die Zeichenkette falls sie gefunden wird
                    optionElements[i].firstChild.nodeValue = optionLabel.replace(/\u2011/,'-');
                  }
                }
              }

              Danke
              Grüße
              Tina

    3. Hallo.

      Hm, ein normaler Bindestrich ist in einer <option> bereits non-breaking, also ...

      Hm, wo steht das? Oder verlässt du dich bloß auf irgendwelche Darstellungen auf irgendwelchen GUIs auf irgendwelchen Betriebssystemen?
      MfG, at