8

我刚刚在使用 knockoutjs 绑定的 Firefox 中遇到了一个非常奇怪的多行文本行为。这是我的小提琴:http: //jsfiddle.net/NznVZ/

我们有一个 textarea 和 span,其 value/text 绑定到同一个 observable。目前,Chrome 和 IE 确实在 span 元素中显示多行文本,但 firefox 没有(它只是将几行连接成 1)。

有人可以解释什么是/哪里有问题吗?也许有人已经遇到过这个问题并有解决方案?

提前致谢

PS 火狐 12、IE 9、Chrome 18

4

2 回答 2

20

在跨度上设置white-space: pre-wrap样式将使其工作:http: //jsfiddle.net/mbest/NznVZ/12/

这里有一点背景。当使用 设置文本时, IE 和 Chrome 会将字符串中的换行符转换为<br>HTML 中的元素innerText,这就是 Knockout 使用的。Firefox 没有innerTextso Knockout uses textContent,它不会对字符串进行任何转换。(有趣的是,当您使用该white-space: pre-wrap样式时,Chrome 会匹配 Firefox。)

IE:

<span>First line.<br>Second Line.<br>&nbsp;&nbsp;&nbsp;&nbsp; Third line preceded with 5 space characters.</span>

Chrome(没有空格样式):

<span>First line.<br>Second Line.<br>     Third line preceded with 5 space characters.</span>

Firefox 和 Chrome(带有空白样式):

<span>First line.
Second Line.
     Third line preceded with 5 space characters.</span>
于 2012-05-08T00:38:21.533 回答
-1

如果你想要一个 javascript 解决方案:http: //jsfiddle.net/9KAQX/

这里唯一的优点是跨度中不存在“\n”字符。

于 2012-05-08T00:41:21.720 回答