加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 02:24:36 所属栏目:百科 来源:网络整理
导读:我正在使用kramdown解析器将markdown转换为html.我想在不修改原始markdown语法的情况下对图像使用延迟加载.我可以通过编辑kramdown gems中的link.rb文件来实现这一点. 但我不想这样做.因为如果有人更新kramdown,我将失去这些编辑.有没有其他方法可以在不修改
我正在使用kramdown解析器将markdown转换为html.我想在不修改原始markdown语法的情况下对图像使用延迟加载.我可以通过编辑kramdown gems中的link.rb文件来实现这一点.

enter image description here

但我不想这样做.因为如果有人更新kramdown,我将失去这些编辑.有没有其他方法可以在不修改原始图像语法的情况下执行此操作

原始图像语法:![](某些图像链接)

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

预期输出:< img data-src =“some image link”alt =“”/>

解决方法

您可以使用 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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读