我有一个拥有大量AJAX的骨干应用程序。 (每个页面加载导致5-6个ajax调用)因为我在这些视图中有很多视图和内部视图,
如果我运行Phantom.js,我能获得最终的html结果吗?
最终结果是用户在所有ajax调用运行后看到的内容。
答案 0 :(得分:35)
PhamtonJs是一款带有JavaScript API的无头WebKit。在抓取页面时,PhatomJs将下载所有依赖请求,例如images,js,css ......它还将执行JS和ajax调用。 但是,在页面完成加载时调用onLoaded回调,而不是在没有挂起请求时调用。所以,你必须使用一个技巧。
有两种方法可以解决问题:
答案 1 :(得分:11)
Phantom.js能够在你的页面中运行javascript,所以这应该有效。有一个article描述了如何使用Phantom.js为抓取工具提供漂亮版本的javascript网站。
一定要给Phantom.js足够的时间来完成ajax调用,就像thread describes一样。
答案 2 :(得分:1)
你可以使用$ .active和waitFor.js脚本一起返回服务器的活动连接数,我们需要等待它为0才能完成所有请求。
答案 3 :(得分:0)
如果您可以访问网站的javascript代码,除了waitFor()
之外,我认为您可以使您的ajax请求同步。它有时更简单,更准确。