2015-06-08 47 views
1

下面的代碼片段工作正常,並返回在Firefox,Chrome和Safari Web控制檯Document節點。但是,它在PhantomJS 1.9.8中返回null。如何在PhantomJS中使用DOMParser?

(new DOMParser()).parseFromString("<div></div>", "text/html"); 

任何想法爲什麼這是返回null?

回答

3

正如大家可能注意到parseFromString()需要其表示所期望的類型的第二參數。 HTML根本就沒有在PhantomJS支持(目前版本2.0.0):

enter image description here

由於this page筆記,PhantomJS 2是基於WebKit的538.1(10月/ 2013年11月)和上表顯示,HTML支持是加入鍍鉻與版本30一出來就1. Oktober 2013這已經是眨眼(是的,德國Wikipedia頁面比英國要好)。它可能在後來的WebKit版本中取決於開發週期。

其他方式

  • PhantomJS可以創建一個從 「文本/ XML」 的文件。所以如果你有xhtml,你可以像這樣解析它。

  • 您也可以看看解析HTML的其他方式。這個MDN文章在這方面是非常廣泛的:HTML to DOM

  • 如果那是徒勞的,你可以嘗試看看,如果一些Node.js的模塊可以充分解析HTML。 PhantomJS和node.js有不同的執行環境,但幾乎沒有依賴關係的模塊往往適用於兩者。

+0

一個人怎麼會去不使用的DOMParser創建從PhantomJS爲「text/xml」的文件?感謝和推進! – lizlux

+0

@lizlux我不知道任何其他方式,但爲什麼不使用它,如果它可用? –

0

你可以使用類似這樣的填充工具:如果複製到vendor/assets/javascripts,你可以把它只能加載測試
https://gist.github.com/eligrey/1129031

:如果你是

# config/initializers/assets.rb 
Rails.application.config.assets.precompile += %w(html-domparser.js) 

# app/views/layouts/application.html.erb 
<%= javascript_include_tag 'html-domparser' if Rails.env.test? => 

或者有興趣支持舊瀏覽器,你可以像所有其他js一樣在所有環境中加載它。