如何用Nokogiri添加没有值的属性



我试图将属性autoplay添加到iframe。但是,这个属性只是一个标记,它没有值:

<iframe src="..." autoplay></iframe

在Nokogiri中添加一个属性,就像:

iframe = Nokogiri::HTML(iframe).at_xpath('//iframe')
iframe["autoplay"] = ""
puts iframe.to_s
---------- output ----------
"<iframe src="..." autoplay=""></iframe>"

Nokogiri是否有这样的方法来做到这一点,或者我是否应该在最后用正则表达式删除/=""/ ?

谢谢

Nokogiri不能随心所欲,开箱操作

  • 选项1:使用你的正则表达式解决方案

  • 选项2:HTML语法说布尔属性可以设置为自己的值,因此这是合法的,可以在你的代码中这样做:

    iframe["autoplay"] = "autoplay"
    
    输出:

    <iframe src="..." autoplay="autoplay"></iframe>
    
  • 选项3:修改Nokogiri宝石代码。

    $ edit nokogiri-1.6.6.2/lib/nokogiri/html/element_description_defaults.rb
    

    查找这一行:

    IFRAME_ATTRS = [COREATTRS, 'longdesc', 'name', ...
    

    并插入自动播放:

    IFRAME_ATTRS = [COREATTRS, 'autoplay', 'longdesc', 'name', ...
    

    现在Nokogiri将把autoplay作为二进制属性,如您所愿。

    我正在为你的想法创建一个pull request,为每个人添加这个功能到Nokogiri:

    https://github.com/sparklemotion/nokogiri/pull/1291

相关内容

  • 没有找到相关文章

最新更新