原生 JS 实现 HTML 转 Markdown,以及其实现逻辑

之前因为一些需要,需要转换部分 HTML 标签成 markdown 格式,但是不知不觉就完善到一个相对完整的函数。

然后我就封装成了一个文件放在了 github ,也简单做了两个示例网页。

  1. HTML 转换 -- https://kohunglee.github.io/html2md/example/conversion.html
  2. 直接就粘贴成 markdown 格式 -- https://kohunglee.github.io/html2md/example/Paste_and_convert.html

代码地址在 html2md

其实这类函数在 github 上有很多,但是或多或少都对 HTML 的还原支持的不够完善,比如 turndown.js 是最热门的,但却不支持表格的恢复,索性就自己做了一个。

其实之间的转换还挺复杂,需要考虑各个标签的优先级,做完又花了两天才完善到一定程度。

(不过需要提醒的是,Safari 和 iOS 上的浏览器不支持这个,因为它们对正则支持的不够完整。不过对于前者,可以使用Chrome,对于后者,又压根无法复制出已封装了 HTML 的内容,所以也不需要考虑。)

代码的实现逻辑如下:

其中,最开始声明了一些数组变量,用于将一些转换过程中的中间产物进行储存。

然后 pureHtml 这个变量就是整个加工过程中的原料,一直到最后。

首先,函数处理的入口是从 112 行 开始的。

第一步,删除