PhantomJS:当HTML有资源时,setContent不起作用

时间:2013-09-30 20:30:58

标签: html phantomjs

此脚本有效:

var page = require('webpage').create(); 

var html = '<h1>Test</h1><img>'; //works with page.setContent and page.content
//var html = '<h1>Test</h1><img src=".">'; //only works with page.content

page.setContent(html, 'http://github.com');
//page.content = html;

page.render('test.png');
phantom.exit();

但向src添加img属性会使其无声失败(page.render返回false并且不会生成图片。)

设置page.content直接适用于两种情况,但相对URL则不然。加载link等资源的其他标记也会发生同样的情况。链接资源是否存在无关紧要。测试了1.8.1和1.9.2。

这是一个错误还是我误解了API?

1 个答案:

答案 0 :(得分:4)

如果网页未完全加载,则无法呈现该网页。

当您设置链接或src<img>时,它会尝试异步加载图片。 因此,它需要等待加载完成。

请尝试以下代码。

page.onLoadFinished = function(status) {
    page.render('test.png');
    phantom.exit();
};
page.setContent(html, 'http://github.com');