混淆\ n使用white-space的行为:pre

时间:2014-07-23 10:25:11

标签: html css newline whitespace caret

为什么\n仅在contenteditablewhite-space: pre创建实际新行,如果\n后面有什么内容?

Fiddle

小提琴中的各种例子。第一个contenteditable内部有一个文本节点,其中包含一个\n字符。我的期望是这会在div内创建两行,因为\n字符应该开始一个新行,即使该新行没有任何内容。事实证明,内部一无所有的容器看起来与一个新行的容器完全相同。

接下来的两个框也都有一个\n,但后面跟着文字或\r,因此会创建一个新行。 \n\r的示例是唯一一个为我生成逻辑行为的示例,因为框中没有文本,但\n仍然创建了一条额外的行。

总的来说,它看起来好像\n的使用总是比我预期的少一行。使用Chrome的检查器检查元素时,您可以看到结束</div>被推送到下一行 - 那么为什么contenteditable中没有新行?

背景信息(如果相关)

我正在构建一个类似于Twitter的推文发布输入的contenteditable输入字段,该字段突出显示超出限制的字符。

要解决的问题之一是换行符行为,为了使其跨浏览器兼容(包括IE8),我已经确定在我的情况下最合适的解决方案是在preventDefault()事件上按下RETURN密钥,并手动添加\n,而不是让浏览器添加随机HTML标记。为了使这些\n可见,我的contenteditable div的样式为white-space: pre

这项技术还需要手动将插入符号向前移动一个位置,这是\n未显示为可见字符的问题所在。我可以在\r之后添加\n以确保显示可见的换行符,但这会让我的字符数量变得混乱。

0 个答案:

没有答案