以下代码段正常运行,并在Firefox,Chrome和Safari网络控制台中返回Document节点。但是,它在PhantomJS 1.9.8中返回null。
mvn clean install
知道为什么这会返回null吗?
答案 0 :(得分:4)
您可能已经注意到parseFromString()
采用了表示预期类型的第二个参数。 PhantomJS(目前版本2.0.0)根本不支持HTML:
正如this page所述,PhantomJS 2基于WebKit 538.1(2013年10月/ 11月),上表显示HTML支持已添加到Chrome中,版本30出现在1. Oktober 2013上已经Blink(是的,德国的WikiPedia页面比英文版更好)。根据开发周期,它可能在以后的WebKit版本中出现。
PhantomJS可以从“text / xml”创建一个DOCUMENT。所以如果你有xhtml,你可以像这样解析它。
您还可以查看解析HTML的其他方法。这篇MDN文章在这方面非常广泛:HTML to DOM。
如果那没有结果,你可以试着看看某个node.js模块是否可以充分解析HTML。 PhantomJS和node.js具有不同的执行环境,但几乎没有依赖关系的模块往往同时适用于这两种模式。
答案 1 :(得分:0)
你可以使用像这样的polyfill:
https://gist.github.com/eligrey/1129031
如果将其复制到vendor/assets/javascripts
,则只能在测试中加载它:
# 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? =>
或者,如果您对支持旧浏览器感兴趣,可以在任何其他环境中加载它。
答案 2 :(得分:0)
以@schpet的内容为基础。
如果您对application.html.erb中的text-align: center;
感到陌生。
这对我有用: 在rails_helper.rb中:
if Rails.env.test?