• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Text wrap in einer Tabelle mit Firefox

fmhweb

Neues Mitglied
Moin,

wie bekomme ich es hin, dass ein langer Text mit Firefox in einer Zelle gebrochen wird.

z.B.

text_text_text_text

soll so ausehen:

text_text_
text_text

Ich suche jetzt schon seit drei Stunden:shock: nach einer Lösung. Es gibt viele Einträge im Internet und viele Antworten, doch keine von denen funktioniert bei mir.

Soweit bin ich gekommen:

<td style="white-space:-moz-pre-wrap; word-break:break-all; word-wrap:break-word; table-layout:fixed; width:200px;">Der_Text_der_gebrochen_werden_soll</td>

Mit allen anderen Browsern (ausser Firefox) funktioniert es auch so:

<td style="word-wrap:break-word; width:200px;">Der_Text_der_gebrochen_werden_soll</td>

Ich benutze die neuste Version des Firefox. Kennt jemand eine Lösung?
 
Hier mal was zum selber testen! Falls jemand Bock darauf hat:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>

<table>
<tr>
<td style="white-space:-moz-pre-wrap; word-break:break-all; word-wrap:break-word; table-layout:fixed; width:150px;">
Bitte_brecht_diesen_Text_ohne_das_die_Zelle_breiter_wird
</td>
</tr>
</table>

</body>
</html>

Bei breiter das leerzeichen löschen. Kein Plan warum das passiert!
 
Zuletzt bearbeitet:
Naja, ich hätte mir das gerne gespart, aber da ich sowieso php benutze, habe ich es jetzt per script gelöst. Hier mal ein Auszug aus der Seite:

$strlencount = 0;
do{
$ausgabe = substr($row->Text,$strlencount,($strlencount + 23));
if (!empty($ausgabe)){
echo $ausgabe.'<br>';
}
$strlencount = $strlencount + 23;
} while ($ausgabe);

Werde das noch ein bisschen verbessern (z.B. Browser check), aber es funktioniert.

Eine bessere Lösung wäre aber trotzdem schön, damit der Text beim _ (Unterstrich) gebrochen wird.
 
Zuletzt bearbeitet:
Hab die Lösung gefunden. Bei mir stand ja <td style="... word-wrap:break-word; table-layout:fixed; width:150px;">.

table-layout:fixed; unter <td>. Wenn es, wie gedacht, im <table> tag steht, dazu noch die Breite angegeben wird, funktioniert es.

Und dafür habe ich jetzt 5-6 Stunden verschwendet. Echt bescheuert. Naja, vielleicht hilft es ja jemanden.

Es wird zwar immer noch nicht beim _ (Unterstrich) gebrochen, wie in allen anderen Browsern, aber man brauch keinen code mit einer Schleife.
 
Zuletzt bearbeitet:
table-layout:fixed; gehört eigentlich zu table. Table und jede td müßte width bekommen.
Dann funktioniert word-wrap:break-word; in den meißten neuen Browsern (Im ff 3.0 jedoch noch nicht ).
Der IE kennt break-word schon ab 5.5.

Der Unterstrich wird natürlich nicht anders behandelt als andere Zeichen.
Du könntest aber hinter jeden Unterstrich ein Leerzeichen setzen.
 
Das mit dem Leerzeichen ist für mich keine Lösung. Allerdings bin ich auch so voll und ganz zufrieden. Nur Opera bricht den Text immer nach einem Unterstrich und damit habe ich hauptsächlich getestet. Für mich ist die Frage hiermit beantwortet, Hauptsache ist, dass die Tabellen nicht breiter werden. Danke.
 
In Browsern die word-wrap:break-word; nicht (aber table-layout:fixed) kennen reicht der Text über die Zelle hinaus und schiebt sich über die Nachbarzelle(n).
Der Text ist somit nicht mehr lesbar.
 
Es gibt auch noch &​shy;, <wbr> und &​#8203;​.

- wbr



Btw: Das Entity-Parsing ist ein bisschen seltsam hier im Forum, oder?

Edit: In den Entities in der ersten Zeile steckt hinter dem & jeweils ein längenloses Leerzeichen. Also bitte im Zweifel abtippen und nicht kopieren.
 
Zuletzt bearbeitet:
Zurück
Oben