Javascript 如何在page.evaluate内执行page.render?

Javascript 如何在page.evaluate内执行page.render?,javascript,phantomjs,Javascript,Phantomjs,我确实希望呈现我的页面并在evaluate函数中退出PhantomJS,因为我希望在触发特定事件时触发它 我试过这样的方法: page.evaluate(page, function (page, phantom) { //do some stuff on my page //i want to execute this in an eventhandler of my page though thats not the problem page.render('im

我确实希望呈现我的页面并在evaluate函数中退出PhantomJS,因为我希望在触发特定事件时触发它

我试过这样的方法:

page.evaluate(page, function (page, phantom) {

    //do some stuff on my page

    //i want to execute this in an eventhandler of my page though thats not the problem
    page.render('imgName.png'); 
    page.render('pdfName.pdf');
    phantom.exit();

}, page, phantom);
这在我的示例中不起作用,因为
page.render
似乎未定义。可能有一个用于参数的序列化程序,它没有序列化obj的函数

这可能吗?有人知道我的问题的解决方案吗

我知道我可以在求值函数中设置一个while循环,防止其终止,然后在外部执行此页面渲染。不过我不喜欢这样。

page.evaluate()
是沙盒。传入的函数在页面上下文中求值,所有参数都需要可序列化才能成功传入。您不能将
页面
幻影
传递到页面上下文中。委员会说:

注意:参数和
evaluate
函数的返回值必须是一个简单的原语对象。经验法则:如果可以通过JSON对其进行序列化,那么就可以了

闭包、函数、DOM节点等将无法工作

这是为了:


问得好,回答得好。谢谢
page.onCallback = function(data){
    if (data.exit) {
        page.render('imgName.png'); 
        page.render('pdfName.pdf');
        phantom.exit();
    }
};
page.evaluate(page, function () {
    //do some stuff on my page

    //i want to execute this in an eventhandler of my page though thats not the problem
    window.callPhantom({ exit: true });
});