汇总:HTML 转换 Markdown 时需要根据元素的 white-space 属性来处理空白字符
背景
应该按网页的实际呈现方式来解析空白字符
涵盖两种场景:
- 网页剪藏 → 浏览器拓展
与 Lute 进行处理
- 从网页复制内容粘贴到思源 →
Lute 前端 进行处理
规范:https://developer.mozilla.org/zh-CN/docs/Web/CSS/white-space
white-space 属性影响空白字符的处理方式,需要依据元素实际的 white-space 属性值分别处理的空白字符包含以下几种:
| |
换行符 |
空格和制表符 |
文本换行 |
行末空格 |
行末的其他空白分隔符 |
| normal |
合并 |
合并 |
换行 |
移除 |
挂起 |
| nowrap |
合并 |
合并 |
不换行 |
移除 |
挂起 |
| pre |
保留 |
保留 |
不换行 |
保留 |
不换行 |
| pre-wrap |
保留 |
保留 |
换行 |
挂起 |
挂起 |
| pre-line |
保留 |
合并 |
换行 |
移除 |
挂起 |
| break-spaces |
保留 |
保留 |
换行 |
换行 |
换行 |
方案
-
首先获取元素的 white-space 属性值
-
然后针对实际的 white-space 属性值分别处理元素中的空白字符
关联问题
@ruin1990
汇总:HTML 转换 Markdown 时需要根据元素的 white-space 属性来处理空白字符
背景
应该按网页的实际呈现方式来解析空白字符
涵盖两种场景:
与 Lute进行处理Lute前端 进行处理规范:https://developer.mozilla.org/zh-CN/docs/Web/CSS/white-space
white-space 属性影响空白字符的处理方式,需要依据元素实际的 white-space 属性值分别处理的空白字符包含以下几种:
方案
首先获取元素的 white-space 属性值
网页剪藏 → 浏览器拓展可以通过 Window.getComputedStyle() 获取元素的样式,例如:
从网页复制内容粘贴到思源 → 在复制得到的 HTML 中,元素的所有样式都是内联样式,可以直接判断
然后针对实际的 white-space 属性值分别处理元素中的空白字符
关联问题
@ruin1990