Mühe: Zeilenumbr. in Eingabeber. standardkonform erzwingen - möglich?

Hallo,

wie ich festgestellt habe, verhalten sich IE und Firefox bei der Aufnahme von Text in mehrzeiligen Eingabebereichen (-> textarea) an für mich momentan entscheidender Stelle verschieden.
Während IE innerhalb des sichtbaren Bereichs die Eingaben am rechten Eingabebereichsende automatisch umbricht, lässt Firefox Eingaben über dieses Ende hinaus zu und baut einen horizontalen Scrollbalken ein.

In selfhtml ist zwar zu lesen, dass sei nur bei Netscape 4.x der Fall

("Nicht so jedoch bei Netscape bis einschließlich Version 4.x. Dort wird automatisch quer gescrollt, solange der Anwender keine Return-Taste drückt, um eine neue Zeile zu beginnen."

http://de.selfhtml.org/html/formulare/eingabe.htm#bereiche_umbruch ),
aber beim Firefox dann eben wohl leider auch.

Ich würde nun aber gerne einen Eingabebereich anbieten, der strikt mit dem WYSIWYG-Prinzip im Einklang steht - Die Daten sollen genau so aus der Datenbank (natürlich nach Änderung der "kritischen" Zeichen) gelesen und in der Ausgabetabelle dargestellt werden, wie sie im Eingabebereich eingegeben wurden - mit allen Zeilenumbrüchen an denselben Stellen.

Gibt es irgendeinen standardkonformen Trick, wie man auch den Firefox zwingen kann, den Zeilenumbruch am Ende des Eingabebereichs durchzuführen bzw. das horizontale Scrollen zu unterdrücken?

Gruß Mühe

  1. Tag Mühe.

    wie ich festgestellt habe, verhalten sich IE und Firefox bei der Aufnahme von Text in mehrzeiligen Eingabebereichen (-> textarea) an für mich momentan entscheidender Stelle verschieden.

    Das wäre mir neu.

    Während IE innerhalb des sichtbaren Bereichs die Eingaben am rechten Eingabebereichsende automatisch umbricht, lässt Firefox Eingaben über dieses Ende hinaus zu und baut einen horizontalen Scrollbalken ein.

    Dieser "Zeilenumbruch" ist keiner, denn ein solcher erfordert eine Useraktion in Form eines Drucks auf die Entertaste. Nur weil du einen siehst, ist noch lange keiner da.

    Ich würde nun aber gerne einen Eingabebereich anbieten, der strikt mit dem WYSIWYG-Prinzip im Einklang steht - Die Daten sollen genau so aus der Datenbank (natürlich nach Änderung der "kritischen" Zeichen) gelesen und in der Ausgabetabelle dargestellt werden, wie sie im Eingabebereich eingegeben wurden - mit allen Zeilenumbrüchen an denselben Stellen.

    Dann sorge dafür, dass die Zeilenumbrüche an den relevanten Stellen gesetzt werden *und* den Weg in die Datenbank finden. Mit HTML hat das allerdings wenig zu tun.

    Gibt es irgendeinen standardkonformen Trick, wie man auch den Firefox zwingen kann, den Zeilenumbruch am Ende des Eingabebereichs durchzuführen bzw. das horizontale Scrollen zu unterdrücken?

    Wie bereits eingangs geschrieben, ist mir das von dir beschriebene Verhalten neu. Wenn du also bitte einen Link auf die relevante Seite posten würdest. Und entscheide dich bitte auch noch für eine Programmiersprache, ansonsten artet dieser Thread möglicherweise in wilde Raterei aus, damit wäre dir sicher nicht geholfen.

    Siechfred

    1. Hi Siechfred,

      wie ich festgestellt habe, verhalten sich IE und Firefox bei der Aufnahme von Text in mehrzeiligen Eingabebereichen (-> textarea) an für mich momentan entscheidender Stelle verschieden.

      Das wäre mir neu.

      Vielleicht meinen wir jeweils was anderes. Nehmen wir als nächstes Beispiel so ein Formular wie in diesem Forum, in das wir unsere Postings setzen.

      Ich teste mit IE 6.0 und Firefox 1.0.7.

      Während ich im Firefox in dieses Formular horizontal tippen kann bis Ultimo (unter Anbau von horizontalen Scollbars), bricht der IE am Ende der Zeile um - da kann ich erst gar nicht übern Rand hinausschreiben. Ist das bei Dir nicht so?

      Dann sorge dafür, dass die Zeilenumbrüche an den relevanten Stellen gesetzt werden *und* den Weg in die Datenbank finden. Mit HTML hat das allerdings wenig zu tun.

      Das mach ich natürlich. :) Aber das Problem ist das des WYSIWYG.
      Ich müsste dazu für den Firefox den Text jeweils nach max. x Zeichen am Stück, wobei x = cols in der textarea, umbrechen, weil der Text eben in der späteren Darstellung in der Tabellenzelle genauso breit erscheinen soll wie im Eingabeformular. Dadurch geht die spätere Darstellung wenigstens nicht mehr in die Breite als sie soll, aber der Text erscheint dennoch nicht so, wie eingegeben, denn lässt der Browser (Firefox) beliebig lange horizontale Eingaben zu, geht das einfach nicht mehr, dann krieg ich IMMER was anderes in der Darstellung als in der Eingabe, sofern der User von der Möglichkeit, über den Rand hinauszuschreiben, Gebrauch macht.

      Und entscheide dich bitte auch noch für eine Programmiersprache,

      PHP 4 in Kombination mit MySql 4.0.20

      Gruß Mühe

      1. Ich teste mit IE 6.0 und Firefox 1.0.7.
        Während ich im Firefox in dieses Formular horizontal tippen kann bis Ultimo (unter Anbau von horizontalen Scollbars), bricht der IE am Ende der Zeile um - da kann ich erst gar nicht übern Rand hinausschreiben. Ist das bei Dir nicht so?

        Nein, Browser ist ebenfalls Firefox 1.0.7 unter Windows XP Home.

        Aber das Problem ist das des WYSIWYG. Ich müsste dazu für den Firefox den Text jeweils nach max. x Zeichen am Stück, wobei x = cols in der textarea, umbrechen, weil der Text eben in der späteren Darstellung in der Tabellenzelle genauso breit erscheinen soll wie im Eingabeformular.

        Das setzt allerdings gleiche Schriftbreite voraus.

        Dadurch geht die spätere Darstellung wenigstens nicht mehr in die Breite als sie soll, aber der Text erscheint dennoch nicht so, wie eingegeben, denn lässt der Browser (Firefox) beliebig lange horizontale Eingaben zu, geht das einfach nicht mehr, dann krieg ich IMMER was anderes in der Darstellung als in der Eingabe, sofern der User von der Möglichkeit, über den Rand hinauszuschreiben, Gebrauch macht.

        Wie gesagt, kann ich nicht nachvollziehen, siehe Testseite. Falls sich das Problem tatsächlich bestätigen sollte, könntest du evtl. mit wrap experimentieren.

        Siechfred

        1. Hi Siechfred,

          Wie gesagt, kann ich nicht nachvollziehen, siehe Testseite. Falls sich das Problem tatsächlich bestätigen sollte, könntest du evtl. mit wrap experimentieren.

          Ja doch, auch hier lässt sich unenendlich in die Breite tippen...

          Dann muss ich mir mal was anderes überlegen.

          Dank und Gruß!
          Mühe

          1. hi,

            Ja doch, auch hier lässt sich unenendlich in die Breite tippen...

            Wenn es dir nur darum geht, zu lange Eingaben ohne White Space dazwischen zu unterbinden, so dass bei der späteren Anzeige der Inhalte diese nicht über die Elementbreite hinausragen - dann sollte doch eigentlich https://forum.selfhtml.org/?t=119103&m=763924 schon helfen.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Hi wahsaga,

              wordwrap () hilft mir zwar zumindest schon mal insofern, dass meine Darstellungszelle nicht zu breit wird, jedoch nicht beim Erreichen des Ziels, dass der User unumgänglich genau das in derselben Formatierung in der Zelle sehen soll, was er in der Textarea eingegeben hat. :)

              Gruß Mühe

              1. wordwrap () hilft mir zwar zumindest schon mal insofern, dass meine Darstellungszelle nicht zu breit wird, jedoch nicht beim Erreichen des Ziels, dass der User unumgänglich genau das in derselben Formatierung in der Zelle sehen soll, was er in der Textarea eingegeben hat. :)

                Er wird sehen, was er eingegeben hat, nämlich ein ganz furchtbar langes Wort, die Zeilenumbrüche, die der IE zaubert, sind nur virtueller, nicht tatsächlicher Natur. Also verlässt du dich entweder auf die Intelligenz deiner User oder behandelst die Eingabe mit Hilfe der genannten Funktionen nach. Allerdings sähe es reichlich unschön aus, wenn aus

                Donaudampfschifffahrtskapitänsmützenhalter

                Donaudampfschifffahr
                tskapitänsmützenhalt
                er

                würde, nur weil du nicht mehr als 20 Zeichen zulassen möchtest.

                Siechfred

          2. Ja doch, auch hier lässt sich unenendlich in die Breite tippen...

            Ach, jetzt kapiere ich dein Problem (hätte meinen IE früher anwerfen sollen), siehe Testseite 2. Der IE bricht in der Textarea mitten im Wort um, der Firefox nicht. Tabelle und DIV werden allerdings in beiden Browsern gestreckt. Siehe also wahsagas Tipp.

            Sorry, stand etwas auf der Leitung :-)

            Siechfred

  2. Moin!

    Während IE innerhalb des sichtbaren Bereichs die Eingaben am rechten Eingabebereichsende automatisch umbricht, lässt Firefox Eingaben über dieses Ende hinaus zu und baut einen horizontalen Scrollbalken ein.

    Ich habe in meinem Firefox 0.8 mal die Textarea dieses Forums probiert: Kein Problem, zu langer Text in einer Zeile wird automatisch in der nächsten Zeile fortgesetzt, ohne dass man horizontal scrollen muß.

    Insofern sehe ich eigentlich nur das (tatsächlich auch in SELFHTML beschriebene) Verhalten.

    Es wäre daher vermutlich hilfreich, mal deinen <textarea>-Quelltext zu sehen.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
    1. Hi Sven,

      Ich habe in meinem Firefox 0.8 mal die Textarea dieses Forums probiert: Kein Problem, zu langer Text in einer Zeile wird automatisch in der nächsten Zeile fortgesetzt, ohne dass man horizontal scrollen muß.

      Schön wärs, wenn das bei allen Firefox-Versionen so wär. :)
      Meiner - Version 1.0.7 - verhält sich anders.

      Es wäre daher vermutlich hilfreich, mal deinen <textarea>-Quelltext zu sehen.

      Der PHP-Code:

      echo "<textarea name="kommentartext" cols="80" rows="6">" . $kommentartext . "</textarea><br><br>";

      Ciao!
      Mühe

  3. Moin!

    Nachdem jetzt ja geklärt ist, was genau dein Problem ist bzw. wo du die Unterschiede siehst:

    Ich würde nun aber gerne einen Eingabebereich anbieten, der strikt mit dem WYSIWYG-Prinzip im Einklang steht - Die Daten sollen genau so aus der Datenbank (natürlich nach Änderung der "kritischen" Zeichen) gelesen und in der Ausgabetabelle dargestellt werden, wie sie im Eingabebereich eingegeben wurden - mit allen Zeilenumbrüchen an denselben Stellen.

    Genau das tut deine Textarea in BEIDEN Browsern.

    Der IE erfindet nicht dadurch, dass er ohne horizontales Scrolling in der nächsten Zeile weitermacht, zusätzliche Zeilenumbrüche. Und der Firefox scrollt auch nur dann horizontal, wenn ein fortlaufendes Wort länger ist, als der verfügbare Anzeigebereich. Der berühmte Donaudampfschifffahrtskapitän würde in einer 20 Zeichen breiten Textarea also im Firefox scrollbar als ein Wort gezeigt werden, im IE hingegen in zwei Zeilen stehen - und trotzdem würden beide Browser das Wort ohne zusätzliche Zeichen wieder an den Server senden.

    Außerdem entspricht das jeweilige Browserverhalten in der Textarea exakt dem, was alle Browserbenutzer in allen anderen Textareas von ihrem Browser erwarten - im IE eben ein Fortsetzen der angefangenen Zeile in der nächsten, im Firefox ein horizontales Scrolling.

    Dagegen hilft nur, die Textarea ausreichend breit zu machen.

    Außerdem ist ein textareabasierter automatischer Umbruch durchaus alles andere als WYSIWYG, da die Breite der Textarea entscheidet, wann und wo umbrochen wird. Da die Textarea aber ohnehin keine weitergehenden Formatierungen erlaubt, sollte dieses Verhalten eigentlich nicht besonders störend sein.

    Gibt es irgendeinen standardkonformen Trick, wie man auch den Firefox zwingen kann, den Zeilenumbruch am Ende des Eingabebereichs durchzuführen bzw. das horizontale Scrollen zu unterdrücken?

    Mache die Textarea breit genug.

    Andere standardkonforme Möglichkeiten existieren nicht. Es soll offenbar nicht die Aufgabe des Seitenautors sein, sich um die Textbearbeitungfunktionen des Browsers zu kümmern. Gute Browser bieten in Textareas recht weitgehende Bearbeitungsmöglichkeiten für den Benutzer (Opera beispielsweise erlaubt mit Strg-Z ein Rückgängigmachen von allen Bearbeitungsschritten, genauso wie es die unendliche Undo-Funktion eines Editors leisten würde).

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
    1. Hallo,

      (Opera beispielsweise erlaubt mit Strg-Z ein Rückgängigmachen von allen Bearbeitungsschritten, genauso wie es die unendliche Undo-Funktion eines Editors leisten würde).

      Der IE auch, weil er, um eine textarea darzustellen, einfach nur ein Multiline-Edit-Control von Windows verwendet, das diese Funktionalität von Haus aus mitbringt.

      Schönen Abend noch,

      Martin

      --
      Wer im Glashaus sitzt, sollte sich nur im Dunkeln ausziehen.