Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在每次url使用CasperJS更改时获取页面标题_Javascript_Events_Phantomjs_Casperjs - Fatal编程技术网

Javascript 如何在每次url使用CasperJS更改时获取页面标题

Javascript 如何在每次url使用CasperJS更改时获取页面标题,javascript,events,phantomjs,casperjs,Javascript,Events,Phantomjs,Casperjs,我已经查看了CasperJS文档,似乎没有任何事件允许我在出现导航时访问当前文档。那么,是否有可能在每次有导航时获取页面的新标题?会在加载另一个URL后立即发出,这通常意味着标题也已更改。它似乎不会在页面加载结束时发出,因此您还需要添加一个步骤,让CasperJS等待页面加载 casper.on("url.changed", function(){ this.then(function(){ this.echo(this.getTitle()); }); });

我已经查看了CasperJS文档,似乎没有任何事件允许我在出现导航时访问当前文档。那么,是否有可能在每次有导航时获取页面的新标题?

会在加载另一个URL后立即发出,这通常意味着标题也已更改。它似乎不会在页面加载结束时发出,因此您还需要添加一个步骤,让CasperJS等待页面加载

casper.on("url.changed", function(){
    this.then(function(){
        this.echo(this.getTitle());
    });
});
您可以以完全相同的方式使用事件。

这里有一个比公认答案稍微快一点的版本,如果您正在处理许多URL更改,它将产生重大影响:

casper.on('url.changed', function () {
  this.then(function () {
    console.log(this.page.title);
  });
});

请解释为什么该活动不能解决您的问题。你说的是单页应用程序吗?据我所知,“navigation.requested”是在导航完成之前显示的,因此我无法访问导航页面标题。例如,此代码无效:。它将只输出“导航发生”。
casper.on(“url.changed”,function(){this.echo(“导航发生”);this.echo(this.getTitle();})当我使用此代码时,我得到的唯一输出是“Navigation Occessed”(导航发生)。结果证明文档具有误导性。我自己尝试过并修复了代码。以这个php文件为例:。它的原始标题是“aaa”,它在一秒钟后导航到一个标题为“bbb”的新页面。当我试图用“url.changed”、“navigation.request”或“resource.received”来处理这个问题时,我只得到第一个标题(“aaa”),而不是第二个标题(“bbb”)。好吧,页面本身会进行重定向。你在CasperJS中等待重定向吗?如果脚本完成,CasperJS将退出。如果您知道时间,只需执行静态
casper.wait(1000)
,但这是另一个问题。