Melvin Cowznofski: Firefox Bug: white-space Eigenschaft in einer Textarea

Hallo,

ich bin durch ein eigenes Projekt gerade auf einen Firefox Bug gekommen, den vor mir auch schon andere entdeckt haben.

Es geht darum, dass man ab Version 36, das ist die aktuelle, in einer Textarea per ENTER-Taste keine neue Zeile anfangen kann, wenn für die Textarea gleichzeitig die CSS-Eigenschaft "white-space" definiert ist.

Ich habe als Beispiel 2 Seiten online gestellt:

Das ist ein valides html5 Dokument mit einer Textarea, die keine CSS Eigenschaften definiert hat.

Und das ist das selbe Dokument, erweitert mit einem style="white-space: normal;" für die Textarea.

Ich würde gerne wissen, ob von Euch auch schon mal mit diesem Phänomen konfrontiert gewesen ist und wenn ja, wie er das Problem gelöst hat.

Nachdem der Unterschied zwischen Textarea und Inputfeld ja die Mehrzeiligkeit ist, ist es ja ein Witz, dass genau die nicht mehr gegeben ist, wenn man eine bestimmte CSS Eigenschaft verwendet. Laut der oben verlinkten Seite war der Zeilenumbruch bei white-space Deklarierung in früheren Firefoxversionen problemlos möglich.

Hmmm .. irgendwie stehe ich jetzt ratlos da. Viel mehr Info im Web habe ich auch nicht gefunden.

Ich bitte um Feedback.

Mit lieben Grüßen

Melvin Cowznofski

--
Melvin Cowznofski What – me worry?
  1. Hi,

    ich bin durch ein eigenes Projekt gerade auf einen Firefox Bug gekommen, den vor mir auch schon andere entdeckt haben.

    das ist m.E. kein Bug, das ist erwartetes Verhalten.

    Bei white-space: normal; werden, egal in welchem Element, Zeilenumbrüche und auch sonstiger Whitespace zu genau einem Leerzeichen zusammengefaßt.

    Definiert ist das so:

    normal     This value directs user agents to collapse sequences of white space, and break lines as necessary to fill line boxes.

    Und genau das macht der Firefox auf Deiner Beispielseite. Warum sollte das in einer Textarea anders sein als in anderen Elementen?

    Wenn Du Zeilenumbrüche erhalten willst, gibt es andere Werte für white-space (die, die mit pre anfangen)

    cu, Andreas

    --
    Warum nennt sich Andreas hier MudGuard? O o ostern ... Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hallo Andreas,

      das ist m.E. kein Bug, das ist erwartetes Verhalten.

      Bei white-space: normal; werden, egal in welchem Element, Zeilenumbrüche und auch sonstiger Whitespace zu genau einem Leerzeichen zusammengefaßt.

      Das sehe ich nicht so. Weil unabhängig davon, was inenrhalb einer Line mit den Leerzeichen geschieht, muss man auch weiterhin die Möglichkeit haben, per ENTER Taste eine neue Zeile manuell zu beginnen.

      Bei besagtem Problem kann man ja nicht mal eine neue Zeile anfangen, wenn man noch überhaupt nichts geschrieben hat. Also das ist sicher nicht das "normale" Whitespaceverhalten. Und genau dafür steht die Eigenschaft "normal" ja!

      Mit lieben Grüßen

      Melvin Cowznofski

      --
      Melvin Cowznofski What – me worry?
      1. Hi,

        Das sehe ich nicht so. Weil unabhängig davon, was inenrhalb einer Line mit den Leerzeichen geschieht, muss man auch weiterhin die Möglichkeit haben, per ENTER Taste eine neue Zeile manuell zu beginnen.

        Ja, in einer textarea sollte das so sein. Darum nutzt man für textarea ja auch nicht white-space:normal.

        Bei besagtem Problem kann man ja nicht mal eine neue Zeile anfangen, wenn man noch überhaupt nichts geschrieben hat. Also das ist sicher nicht das "normale" Whitespaceverhalten.

        Doch, das ist das normale white-space-Verhalten von HTML. Für textarea-Elemente wird aber, da hier ein anderes als das normale Verhalten gewünscht wird, üblicherweise nicht white-space:normal; verwendet.

        Die Auswirkung einer CSS-Eigenschaft ist (bzw. sollte sein) unabhängig von dem Element, auf das sie angewandt wird.

        Ein

        <p>
        Es
        war
        einmal
        
        ein
        Mann
        </p>
        

        wird angezeigt (solange white-space:normal gilt) als "Es war einmal ein Mann".

        <textarea>
        Es
        war
        einmal
        
        ein
        Mann
        </textarea>
        

        wird, sobald white-space:normal gilt, genauso angezeigt. Es wäre doch höchst verwirrend, wenn die Anzeige, nur weil der Elementname anders lautet, sich unterschiede.

        Wie ich gelesen habe (im 19:14-Post), hast Du das Problem ja selbst verursacht, indem Du planlos Eigenschaften auf alle Elemente angewandt hast - und Dich dann darüber gewundert hast, daß die Eigenschaft so wie von Dir gefordert umgesetzt wurde ...

        cu, Andreas

        --
        Warum nennt sich Andreas hier MudGuard? O o ostern ... Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  2. Hi,

    Es geht darum, dass man ab Version 36, das ist die aktuelle, in einer Textarea per ENTER-Taste keine neue Zeile anfangen kann, wenn für die Textarea gleichzeitig die CSS-Eigenschaft "white-space" definiert ist.

    Was willst du denn mit der Angabe white-space:normal für die Textarea überhaupt erreichen?

    MfG ChrisB

    --
    Kids these days just don’t get ASCII art any more – it’s all UTF-this and Unicode-that with those youngsters …
    1. Hallo Chris,

      Was willst du denn mit der Angabe white-space:normal für die Textarea überhaupt erreichen?

      aufgefallen ist mir die Sache, weil ich die Eigenschaft in einem RESET-CSS notiert habe. Das hat mich heute 1 Stunde Debuggen gekostet, bis ich endlich die die verantwortliche Zeile und das verantwortliche Stylesheet hatte.

      Natürlich kann man argumentieren, dass ich die Eigenschft einfach aus dem RESET-CSS streichen kann, weil das eh "die Norm" ist.

      Aber genau daran sieht man ja, dass dem offenbar nicht so ist, weil die Norm (also ohne der Deklaration) ist eine Textarea mit beliebig vielen selbstbestimmten Zeilen. :)

      Mit lieben Grüßen

      Melvin Cowznofski

      --
      Melvin Cowznofski What – me worry?
      1. Hi,

        Was willst du denn mit der Angabe white-space:normal für die Textarea überhaupt erreichen?

        aufgefallen ist mir die Sache, weil ich die Eigenschaft in einem RESET-CSS notiert habe. Das hat mich heute 1 Stunde Debuggen gekostet, bis ich endlich die die verantwortliche Zeile und das verantwortliche Stylesheet hatte.

        Natürlich kann man argumentieren, dass ich die Eigenschft einfach aus dem RESET-CSS streichen kann, weil das eh "die Norm" ist.

        Aber genau daran sieht man ja, dass dem offenbar nicht so ist, weil die Norm (also ohne der Deklaration) ist eine Textarea mit beliebig vielen selbstbestimmten Zeilen. :)

        getComputedStyle für ein textarea-Element ohne zusätzliche Formatierungen zeigt, dass im Firefox der Default für white-space der Wert pre-wrap ist.

        Und http://www.w3.org/TR/html5/rendering.html#the-textarea-element-0 besagt, dass der User Agent eben diesen Wert über sein Default-Stylesheet bereitstellen soll.

        Das ganze ist also weniger ein Bug, und mehr ein f/ck-up deinerseits …

        MfG ChrisB

        --
        Kids these days just don’t get ASCII art any more – it’s all UTF-this and Unicode-that with those youngsters …
      2. @@Melvin Cowznofski:

        Natürlich kann man argumentieren, dass ich die Eigenschft einfach aus dem RESET-CSS streichen kann

        Ich würde argumentieren, dass man das ganze Reset-CSS streichen kann.

        Ich hab noch nie verstanden, welchen Sinn manche darin sehen, sinnvoll gesetzte Browser-Defaults durch nicht sinnvolle zu überschreiben.

        LLAP

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)