我有以下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org
/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <meta name="author" content="RLJ RLJ" />

    <title>Untitled 2</title>
</head>

<body>
    <form action=SCRIPT.php method=POST>
        <textarea name="pastwork" id="pastwork" rows="6" wrap="hard" style="border: 1px solid
#808080; width:85px; padding: 5px;"></textarea>
        <input type="submit" value = "Submit"/>
    </form>
</body>
</html>

其中SCRIPT.php如下:
<?php
$pastwork = $_POST['pastwork'];

echo "<pre>". $pastwork."</pre>";
echo "<br />";
echo nl2br($pastwork);

?>

我遇到的问题是Firefox没有正确地传递换行符。
当我在文本区域中键入以下内容时(B表示导致光标跳到下一行的字符,N表示导致该词跳到下一行的字符):
dddddddddddddddff
ggg ggg ggNgg sss公司
例如,文本区域如下所示:
+------------+
| dddddddddd |
| Bdd fff    |
| ggg ggg    |
| ggNgg sss  |
+------------+

Internet Explorer将其响应为:
滴滴涕
Bdd fff公司
ggg ggg公司
ggNgg sss公司
这是正确的,换行符正好在文本区域中的位置。
不过,Firefox的回应是:
dddddddddd n个fff
ggg ggg ggNgg sss公司
无论我使用nl2br()还是pre标记。
(我还没有试过其他浏览器)
有人能告诉我为什么这样做,以及如何确保换行符被正确地传递,而不管浏览器是什么。

最佳答案

在Firefox(至少3.6+)中,为了保留自动换行符,您必须执行以下操作。。。
当然,设置wrap=hard
不要使用colsrows属性
必须指定CSS宽度和高度
完全不指定CSS溢出(让Firefox来决定)
测试了这个确切的场景,它似乎在正确的位置断线。

07-24 17:09