Zeilenumbruch "erzwingen" (ohne <br>)

  • Hallo Leute!

    Ich lasse bei Anklicken eines Links mittels der Java-Script-Funktion "open()" ein neues Fenster öffnen. In diesem befindet sich eine HTML-Seite mit Text, eingeteilt in mehrere Absätze, welche durch Umrandung sichtbar gemacht sind:

    Code
    <p style="border: 2px solid; border-color: #1F1F1F;">
     Ich bin der Text des Absatzes!
    
    
     Dies ist eine viel zu lange Zeichenkette:  blablablablablablablablablablablablablablablablablablablablablablablablablablablablablablablabla
    </p>


    Das neue Fenster soll aber bestimmte Dimensionen und damit nur eine bestimmte Breite haben. Der Absatz ist idealerweise automatisch genau so breit wie das Fenster. Das Problem dabei:
    Steht in einem Absatz eine Zeichenfolge (nicht durch Leerzeichen oder Umbruch unterbrochen), so gehen alle Zeichen um die die Zeichenfolge länger (also "breiter") als die Absatzbreite ist, über ihn hinaus.
    Man kann es sich so vorstellen:
    Wenn man das offene Fenster vor sich hat, dann umfasst der linke und der rechte Rand des Fensters ganz genau den linken und den rechten Rand des Absatzes. Was aber sofort auffällt: Der Text in diesem Absatz geht über seinen Absatz und somit über den Fensterrand hinaus. Am unteren Rand des Fensters ist ein Scrollbalken, über den man erst nach rechts scrollen muss, um auch den überstehenden Text lesen zu können.

    Wie kann ich nun vermeiden, dass der Text über seinen Absatz hinaus geht und somit ein Umbrechen einer zu langen Zeichenkette erzwingen?
    Scrollen im Fenster deaktivieren kann ich nicht machen, weil horizontales Scrollen dringen notwendig sein wird. Manuell einen Umbruch einfügen geht auch nicht, weil der Text später dynamisch und seine Länge nicht vorhersehbar sein wird.

    Falls es etwas zur Sache tut: Das Problem tritt bisher in Mozilla Firefox auf. Mit anderen Browsern werde ich es erst noch testen.

    Warum einfach, wenn es auch kompliziert geht?

  • Tut mir leid, aber da das ganze noch in Entstehung auf meinem PC liegt, gibt es keinen Link.

    Ich geb dir stattdessen die notwendigen Texte dazu, falls es dir hilft mir zu helfen :wink:

    Warum einfach, wenn es auch kompliziert geht?

  • Der Link zum Öffnen des neuen Fensters:

    Code
    [url='./guestbook.php']Gästebuch öffnen[/url]

    Die dazugehörige Java-Script Funktion:

    Code
    function OpenGuestbook(Adress)
       {
        Guestbook = window.open(Adress, "Guestbook", "scrollbars=yes,width=525,innerwidth=525,height=500,innerheight=500,left=100,top=200");
        Guestbook.focus();
       }

    (Gibt in der Vorschau meines HTML-Editors eine Fehlermeldung, die keinen mir ersichtlichen Sinn ergibt, funktioniert aber trotzdem, in Mozilla Firefox sogar fehlerfrei)

    Der Inhalt von guestbook.php ist natürlich reiner HTML-Text. Dieser könnte beispielsweise so aussehen:

    Übrigens danke für dein Engagement :wink:

    Warum einfach, wenn es auch kompliziert geht?

  • Hi Rüdicher,

    der Sinn der Sache ist mir nicht so richtig klar. Wenn ich ein Fenster mit fester Größe öffne, formatiere ich doch auch den Text auf die fixe Fenstergröße. Der Browser braucht ja auch Anhaltspunkte nach denen er den Umbruch macht. Je nach Fenstergröße in Relation zur Schriftgröße und Leerzeichen erzeugt der Browser einen weichen Umbruch und mit
    einen harten Umbruch. Ein normaler Text besteht doch nunmal aus einzelnen Wörtern die durch Leerzeichen getrennt sind. :smilie085:

    Gruß yeti66 :wink:

  • Zitat von yeti66

    der Sinn der Sache ist mir nicht so richtig klar. Wenn ich ein Fenster mit fester Größe öffne, formatiere ich doch auch den Text auf die fixe Fenstergröße.

    Der Text soll später dynamisch sein, wie "guestbook.php" schon vermuten lassen sollte. Im Prinzip hast du Recht mit dem was du meinst. Aber stell dir vor, es trägt sich einer in das Gästebuch ein, der gerne mal Leerzeichen vergisst, oder mit Absicht so einen Sermon verfasst. Ist beides zwar nicht wünschenswert, jedoch ist man dagegen nicht gefeit und in so einem Fall sieh tes natürlich halt einfach blöd aus und ist für den Ersteller (mich) gewissermaßen peinlich.

    Zitat von sudeki05

    du willst das der text nich unendlich lang geschrieben werden kann gell? wenn ja mach halt ne tabelle mit fixierter größe - geht bestimmt auch anders..

    Du hast es erfasst. Und ich denke, das mit der Tabelle ist genau das, wonach ich gesucht habe. Um ehrlich zu sein ist mir fast schon ein bisschen peinlich, dass ich nicht selbst darauf gekommen bin. ^^
    Danke für den Tipp!

    Einen anderen Weg gibt es aber nicht, oder?

    Warum einfach, wenn es auch kompliziert geht?

  • Jetzt muss ich leider nochmal blöd fragen...

    Ich hab das jetzt mit der Tabelle versucht. Mit dem Attribut oder auch der CSS-Anweisung "width" müsste sich die Tabelle ja auf eine feste Größe einstellen lassen. Aber sie dehnt sich aus, wenn das Wort darin zu lang wird. Wie kann ich das unterbinden?

    Mit <colgroup> geht es auch nicht...

    Warum einfach, wenn es auch kompliziert geht?

  • ich glaube nicht dass es noch aktuell ist x)

    aber bin grad drüber gestolpert und hatte das selbe problem..
    wordwrap bringt hier leider gar nix, weil der entweder nicht innerhalb von wörter unterbricht ODER im strict mode den text einfach IMMER unterbricht,

    deswegen rate ich euch, ne eigene kleine funktion zu schreiben zu schreiben, die via preg_replace nach mehr als ??? Zeichen am Stück sucht und in die mitte nen Bindestrich, Zeilenumbruch oder sowas einfügt.. Ist die sauberste Lösung (meiner Ansicht nach)

    den text via html anhacken zu lassen ist nicht in jedem fall möglich (man vergleiche firefox und IE) und ist meiner ansicht nach eine unelegante lösung..


    so, auch wenn das schon 2 jahre her war,
    vllt hilfts ja wem anders ;)

  • Hallöchen

    Danke. Mir hat es geholfen.

    Bin schon n paar Minuten auf der Suche nach der Lösung des Problems - traurig, dass so ein "alltäglich mögliches" Problem noch nicht von Browserseite behoben werden kann. Gut, dass man wenigstens serverseitig das Problem anpacken kann (zb per PHP).