鍍金池/ 問答/C++  HTML/ 如何確認段落(p,div)中的內容是在哪個字符或元素處換行的?

如何確認段落(p,div)中的內容是在哪個字符或元素處換行的?

  1. 我自己寫了一個簡單的例子,但是有缺陷: 例子:split_p_content.html ,中英文混合時拆分是不準確的;
  2. 自己想了幾天沒找到答案,越想越復雜。感覺和瀏覽器的渲染引擎有關,雖然webkit是開源的,還有Blink,但是,也不知道從哪里看起;
  3. OpenOffice也想過,但是沒搜索到有幫助的內容;
  4. 是否是我思路錯了,還請網(wǎng)友援手,謝謝!
回答
編輯回答
念初

換行判斷\n

2017年7月26日 23:36
編輯回答
茍活

有個API,Element.getClientRects(),可以拿到每行行框位置的數(shù)組

2017年4月26日 02:13
編輯回答
舊城人

直接高效的辦法沒有,但是要達到你說的效果很容易。
把內容取出來,一個字符一個字符地往一個定寬不定高的容器中放,什么時候高度變了,就說明換行了。

另外,如果自己排的話,每個字符按定寬處理,就可以直接算出來,擴展一下,英文字符按半寬處理,結果也應該還好。只是單個字符作為一個小塊來處理,字符量大了,性能也是問題。

2017年1月14日 04:08
編輯回答
故人嘆

花了一點時間寫代碼

兩種方法:

  1. 挨個取一個字符加到最后,直到p元素的高度達到兩倍行高
  2. 將元素中的文本按字符拆分span元素,取第二行第一個元素(elementFromPoint)

https://codepen.io/CarterLi/p...

第二種方式精度較高。。。

如果是等寬字體會比較簡單。等寬字體英文字符寬度都是一樣的,中文字符寬度是英文的兩倍(精確值),只要知道一個英文字符的寬度,就可以直接計算出占滿一行所需要的字符數(shù)量。

EDIT:發(fā)現(xiàn)一個函數(shù) caretPositionFromPoint 很適合這個場景,代碼追加了

2017年6月10日 13:40