2

IE7 から IE10 までの IE は、\n (または \r\n - 関係ありません - 結果は同じです) を使用すると、textarea コントロール内のテキストを誤ってラップするようです。これは IE のバグですか、それとも html 標準を他のブラウザとは異なる方法で扱っているのですか?どちらが正しいのでしょうか? 私は定義しました:

<textarea id="TextArea1" runat="server" style="width: 190px; height: 390px; white-space: normal; word-wrap: normal; overflow: scroll" ></textarea>

JavaScript コード (obj.value += text;) を使用して "VeryLongStringEndingWithNewLine\n" のような長い文字列を追加しようとすると、テキストはスクロールして 1 行で表示されます (これで問題ありません) が、空の行が追加されます (\r \n) - なぜ? 「Short\n」のような短い文字列を複数回追加しようとすると、再び JavaScript コードを介してテキストが同じ行に表示されます (通常の折り返しを適用する必要があるため、別の行に表示する必要があります)。さらに、ポストバックを行うと、すべての \r\n がスペースに置き換えられ (なぜですか?)、テキストが正しく解析されます (crlf の代わりにスペースを使用した場合、通常のスペースでの折り返しは、領域に収まらない場合にのみ折り返します)。

FF または Chrome を使用する場合、同じコントロールが正しく動作します。長い行は追加の空の次の行なしで表示され、短い行は別の行に表示され、ポストバックを実行するときにスペースで置き換えられません。

おそらく他のオプションや空白文字を使用できることはわかっていますが、IEについては上記が正しくないと感じています。コメントはありますか?

4

1 に答える 1

1

通常の状況では、テキストエリアは空白を文字どおりに扱い、必要に応じて折り返します。

ただし、CSS でオーバーライドしているため、結果が不安定になる可能性があります。

この場合、空白 ( \n) は 1 つのスペースに折りたたまれてwhite-space:normalいます。

テキストエリアのデフォルトの動作は完全に問題ないと確信しているため、ここで何を達成しようとしているのか完全にはわかりません。その動作が望ましくない場合は、テキストエリアを使用しないでください。

于 2013-03-30T14:07:15.313 に答える