2015-05-22 74 views
4

我試圖將屬性autoplay添加到iframe。 然而,這個屬性只是一個標記,它沒有一個值:如何使用Nokogiri無價值地添加屬性

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

在引入nokogiri添加它像一個屬性:

iframe = Nokogiri::HTML(iframe).at_xpath('//iframe') 
iframe["autoplay"] = "" 
puts iframe.to_s 

---------- output ---------- 

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

不引入nokogiri有這樣的方式做這個還是應該在最後用正則表達式去除/=""/

謝謝

回答

1

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作爲二進制屬性,只要你想。

    我創建了自己的想法拉入請求,將此功能添加到引入nokogiri給大家:

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