使用phantomjs中的示例就像一个魅力
但是,如果URL需要发出Ajax请求以加载其数据怎么办?我可以触发自定义事件,以便仅在随后生成pdf吗?
(我不想猜测请求将花费多少时间并设置超时)
答案 0 :(得分:1)
此问题的常见解决方案是等待AJAX请求完成后将在页面上显示的元素。
包括this example中的waitFor
函数,并等待作为参数传递给waitFor
的第一个函数返回true,然后它将运行作为第二个参数传递的函数。
page.open("https://example.com/ajaxified/", function (status) {
waitFor(function() {
return page.evaluate(function() {
return document.querySelectorAll(".report").length > 0;
});
}, function() {
page.render("report.pdf");
phantom.exit();
});
});