下面的代碼片段工作正常,並返回在Firefox,Chrome和Safari Web控制檯Document節點。但是,它在PhantomJS 1.9.8中返回null。如何在PhantomJS中使用DOMParser?
(new DOMParser()).parseFromString("<div></div>", "text/html");
任何想法爲什麼這是返回null?
下面的代碼片段工作正常,並返回在Firefox,Chrome和Safari Web控制檯Document節點。但是,它在PhantomJS 1.9.8中返回null。如何在PhantomJS中使用DOMParser?
(new DOMParser()).parseFromString("<div></div>", "text/html");
任何想法爲什麼這是返回null?
正如大家可能注意到parseFromString()
需要其表示所期望的類型的第二參數。 HTML根本就沒有在PhantomJS支持(目前版本2.0.0):
由於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有不同的執行環境,但幾乎沒有依賴關係的模塊往往適用於兩者。
你可以使用類似這樣的填充工具:如果複製到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一樣在所有環境中加載它。
一個人怎麼會去不使用的DOMParser創建從PhantomJS爲「text/xml」的文件?感謝和推進! – lizlux
@lizlux我不知道任何其他方式,但爲什麼不使用它,如果它可用? –