IE stellt non breaking Hyphen (‑) nicht richtig dar.
Tina
- html
0 Cheatah0 LX0 Tina0 at
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="">‑</option>
</select>
Danke im Voraus
Grüße
Tina
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
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
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
@@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
?? 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 ‑ nicht finden.
Grüße
T
@@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 ‑ nicht finden.
Natürlich ginge es auch mit JavaScrpit. Du suchst ja nicht die Zeichenkette '‑', sondern das Zeichen '‑'. Beim Escapen IMMER den Kontext beachten! Der ist hier nicht HTML, sondern JavaScript; also '\u2011'.
Live long and prosper,
Gunnar
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
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 '‑', 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
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