Javascript Phantomjs作为客户端:处理新选项卡

Javascript Phantomjs作为客户端:处理新选项卡,javascript,phantomjs,Javascript,Phantomjs,处理了一个非常类似的案例,但这里的问题集中在使用Phantomjs作为服务器上 我的问题是,我使用Phantomjs作为客户端。在我的代码执行期间,一个新的 选项卡已打开。现在我用下面的方法处理这个问题。以下是网页的首次初始化: var page = new WebPage(); page.onConsoleMessage = function(msg) { console.log(msg); }; page.onLoadStarted = function() { load

处理了一个非常类似的案例,但这里的问题集中在使用Phantomjs作为服务器上

我的问题是,我使用Phantomjs作为客户端。在我的代码执行期间,一个新的 选项卡已打开。现在我用下面的方法处理这个问题。以下是
网页的首次初始化:

var page = new WebPage();

page.onConsoleMessage = function(msg) {
    console.log(msg);
};

page.onLoadStarted = function() {
    loadInProgress = true;
};

page.onLoadFinished = function() {
    loadInProgress = false;
};

page.onUrlChanged = function(targetUrl) {
    console.log('New URL: ' + targetUrl);
};
现在,为了处理第二个页面,我实现了
onPageCreated
处理程序,如下所示:

page.onPageCreated = function(new_page){
    new_page.onConsoleMessage = function(msg) {
      logger.log(msg);
    };

    new_page.onLoadStarted = function() {
      loadInProgress = true;
    };

    new_page.onLoadFinished = function() {
      loadInProgress = false;

    };
    page = new_page;
};
问题是,这当然只能工作一次,因为分配给旧页面的新页面不会再次实现
onPageCreated
方法

问题: 有没有其他更优雅的方式来做到这一点?我在文档中看到,有一个名为
pages
的属性,但是文档非常糟糕。是否可以将我正在使用的主框架切换到这个新选项卡并关闭旧选项卡,而不改变整个页面元素,就像我现在做的那样

比如(伪代码)

附加问题
另一个问题是,如果我像在第一个代码片段中那样再次初始化页面,它似乎不起作用。在我看来,有些东西被垃圾收集了,但它不应该被垃圾收集。

我不知道你说的使用PhantomJS作为客户端或服务器是什么意思。链接的问题有一个与您类似的用例。PhantomJS有一个Web服务器模块,在链接的问题中根本没有使用。好的,谢谢。我的实际版本只是退出脚本并重新启动它。将它包装成一个shell脚本。对于客户端,我的意思是,我在我的机器上运行脚本,它会访问网页并自动执行一些操作。
page.onPageCreated = function(new_page){
    //page.mainFrame = new_page.mainFrame;
    //or
    //page.goToNextTab();
}