2

似乎从 IE7 到 IE10 的 IE 在使用 \n 时错误地将文本包装在 textarea 控件中(或 \r\n - 没关系 - 结果是相同的)。这是 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”这样的长字符串时,文本显示在一行中并带有滚动条(这没关系),但添加了一个额外的空行(\r \n) - 为什么?当我尝试多次添加像“Short\n”这样的短字符串时,再次通过JavaScript代码,文本在同一行(应该在单独的行上,因为应该应用正常的换行)。此外,当我进行回发时,所有 \r\n 都被替换为空格(为什么?),然后正确解析文本(假设我使用空格而不是 crlf 正常换行,只有在不适合该区域时才换行)。

使用 FF 或 Chrome 时,相同的控件行为正确 - 显示长行而没有额外的空下一行,短行在不同的行上,回发时不会用空格替换。

我知道我可能可以使用其他选项或空白字符,但我觉得上面关于 IE 的说法不正确。任何意见?

4

1 回答 1

1

在正常情况下,textareas 按字面意思处理空白并根据需要进行换行。

但是因为你用 CSS 覆盖它,结果可能不稳定。

在这种情况下,空格 ( \n) 将折叠为一个空格,因为这就是这样white-space:normal做的。

我不完全确定您要在这里实现什么,因为我相当确定 textareas 的默认行为非常好。如果您不想要这种行为,则不应使用 textarea。

于 2013-03-30T14:07:15.313 回答