|   |      1 
                                  26
                             好吧,如果你想要一些非常简单的东西,可能对你来说太没用了(如果你在段落中有任何HTML的话,就需要进行大的修改),那么看看这个: 这太简单了,可能只会起作用。这样做的目的是用空格分隔文本,然后逐字追加单词,观察元素高度是否增加,这将指示换行。 | 
|   |      2 
                                  12
                             用于生成PDF之类的用例。 您可以将每行的字符数限制为,如果中间出现拆分,请适当调整。 要获得每行更准确的字符,可以使用单空格字体,然后确定每个允许字体的每个字符的宽度。然后将字符宽度除以允许的文本行宽度的大小,您将得到该字体每行允许的字符数。 你可以使用非等宽字体,但是你必须测量每个字母的宽度。自动猜测宽度的一种方法是使用一个没有边距或填充的跨距,为每个字体(和大小)添加每个字符,然后测量跨距的宽度并使用它。 我已经完成了代码:  | 
|   |      3 
                                  11
                             以下是我最后使用的东西(为了你自己的邪恶目的,请随意批评和复制)。 
   首先,当编辑来自用户时,它与
    
   换行是因为编辑文本框中填充了
    
   当我需要提取格式化文本时,我会调用
    最终结果是一个散列列表,每个散列包含一行文本的内容和垂直偏移量。 
   如果我只想要未格式化的文本,
     | 
|  |      4 
                                  7
                             
   一旦你有了更复杂的结构(比如段落中的链接),上面的解决方案就不起作用了。
    所以我创建了一个javascript库来检测在这些情况下行的换行方式: http://github.com/xdamman/js-line-wrap-detector 我希望这有帮助。 | 
|  |      5 
                                  0
                             在这种情况下,我需要把每一行都用一个跨距来包装。我这样做是为了向文本块添加加垫突出显示效果。将背景添加到包装文本的跨度标记将只填充文本块的开头和结尾,每行必须单独包装。 这是我根据上述建议提出的:  | 
|   |      6 
                                  0
                             当存在内部标记和任意字体和样式时,概念上简单的方法也可以工作,就是进行第一次传递,将每个单词简单地放入自己的元素(可能是“span”,或者像“w”这样的自定义名称)。 然后,可以使用getboundingclientrect()迭代以查找“top”属性的更改位置: 这听起来很慢,但除非文件很大,否则你不会注意到。 |