我有以下代码:
<!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
不要使用cols
和rows
属性
必须指定CSS宽度和高度
完全不指定CSS溢出(让Firefox来决定)
测试了这个确切的场景,它似乎在正确的位置断线。