是的,我认为这可能是最佳方案。我曾在 2020 年 6 月着手开始这项工作,但最终发现工作量巨大,不得不转向其他项目。我当时考虑过几种在 <img 标签中允许 upload:// URL 的方法……但都没有完美方案。以下是我的笔记:
方案一:
在 Markdown 管道中,解析每个 html_block 的内容(通过轻微滥用 xss.js 库),并处理带有 upload:// src 属性的任何图片标签。
优点:全部在 Markdown 管道内完成,仅对 html_block 令牌进行此处理。
缺点:有点误用 xss.js 清理器。它可能不是一个完美的 HTML5 解析器。
此方案可以通过在服务器端使用符合标准的 JavaScript DOM 实现(例如 jsdom)来改进,但这似乎相当臃肿。
方案二:
允许 upload:// src 属性贯穿整个 Markdown 管道,稍后再进行替换。在客户端,这实际上非常简单——我们已经在烹饪后异步替换 upload:// URL 了。在服务器端,这需要使用 Nokogiri 进行额外的处理步骤。
优点:解析器符合 HTML5 标准。
缺点:客户端和服务器端的实现不同,使管道稍微复杂一些。
我认为方案二可能是正确的方向。接下来,我们需要更新 pull_hotlinked_images 作业,以保留 <img 标签,而不将其替换为 Markdown。希望我很快能找到时间重新投入这项工作:![]()