为什么\n
仅在contenteditable
内white-space: pre
创建实际新行,如果\n
后面有什么内容?
小提琴中的各种例子。第一个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
以确保显示可见的换行符,但这会让我的字符数量变得混乱。