我可以在 JavaScript 中使用浏览器的自动换行吗?

Max*_*der 5 javascript browser word-wrap

我在 div 中有一些文本。它可以是任何天底下的 Unicode 文本,包括中文、日文和韩文。现在,我需要将这段文本以某种有效但正确的方式在 JavaScript 中自动换行。然后我需要在每一行的开头插入一个“>”,并将结果文本放入一个文本区域。

浏览器具有 Unicode Word Wrap 算法的实现,正如使用 CSS 在 a 中对 Unicode 文本进行自动换行所证明的那样。(至少,Firefox 有这样的算法,我怀疑其他浏览器也有。)我需要某种方式让 JavaScript 使用相同的自动换行算法,以便我可以正确换行然后“引用”Unicode 文本.

JavaScript 有没有办法使用浏览器的自动换行算法,或者知道文本在 div 或任何其他元素中的何处被换行?

Wes*_*n C 2

您真正想要的不一定是在每行开头的流动文本中插入“>”。您真正想要的是给定块中的每一行左侧都有一个“>”。

您可以通过以下方式完成后者:

1)创建“>”字符的图像,其从上到下的高度等于line-height您计划使用的CSS值。将该图像作为背景应用到您想要“插入”的文本的容器上。让它垂直重复,但不要水平重复。将容器填充到字符/图像的宽度。

line-height2) 让一些 javascript 获取您正在使用的容器的属性的计算值。然后,假设您没有人为设置此容器的高度,则容器中文本的“行数”除以offsetHeight计算出的行高。此时,创建一个单独的容器,其内容仅包含一定数量的 >。将其放置在内容容器的左边缘。

关于您是否可以通过 JavaScript 访问浏览器使用的文本流算法的更大问题是一个有趣的问题,但我很确定答案是否定的。然而,随着越来越多的开发人员开始使用 Canvas 元素,人们正在编写自己的元素(Canvas 有文本绘制,但没有自己的文本流布局算法)。您可能想看看 Bespin 的人做了什么(https://bespin.mozillalabs.com/ - 这是一个使用 Canvas 实现的文本编辑器),或者查看一些沙袋/图像文本包装 javascript 库的源代码,例如 jQSlickWrap(http ://jwf.us/projects/jQSlickWrap/)。