支持在Markdown中为图像添加延迟加载

Ara*_*RRK 5 ruby markdown jekyll jekyll-extensions kramdown

我正在使用kramdown解析器将markdown转换为html。我想对图像使用延迟加载而不修改原始的markdown语法。我可以通过编辑kramdown gems中的link.rb文件来实现。

在此处输入图片说明

但我不想遵循这种方式。因为如果有人更新kramdown,我将丢失这些编辑。还有其他方法可以在不修改原始图像语法的情况下执行此操作吗?

原始图片语法: ![](some image link)

当前输出(没有上面的编辑): <img src="some image link" alt=""/>

预期产量: <img data-src="some image link" alt=""/>

Leo*_*sov 2

您可以使用Nokogiri改变生成的 HTML ,这几乎是您的任务所需的所有代码。

def responsive_img_src(html_source)
  doc = Nokogiri::HTML::Document.parse('<html></html>', nil, 'UTF-8')
  fragment = Nokogiri::HTML::DocumentFragment.new(doc, html_source)
  fragment.css('img').each { |img| img['data-src'] = img['src'] }
  return fragment.to_html
end
Run Code Online (Sandbox Code Playgroud)

您不能直接使用它Nokogiri::HTML(html_source)来解析您的源代码,因为它会将输出包装到格式良好的 HTML 文档中。这就是您需要 DocumentFragment 的原因。