Phantomjs,ajax内容和JS内联

时间:2013-06-09 21:28:31

标签: ajax google-analytics requirejs phantomjs

我一直在玩PhantomJS来生成我们的一些应用程序页面的静态版本,这些页面使用ajax调用来呈现页面的各个部分。用于获取HTML内容的PhantomJS脚本似乎很简单:

var page = require('webpage').create();                                   
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like       Gecko) Chrome/24.0.1312.70 Safari/537.17';
// I want JS to execute, so that the ajax sections can be loaded
page.settings.javascriptEnabled=true;
page.open('http://<host>/<some-page>/', function (status) {    if (status !== 'success') 
{
    console.log('Unable to access network');
} else {
    console.log(page.content);                                            
}
phantom.exit();
});

我遇到的问题,一些JS脚本,如requirejs和Google Analytics,通过添加相关的JS脚本来修改文档,并在文档中几乎内联。例如:     <script data-main="main" src="require.js"/>

转换为:

<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requi    remodule="jquery" src="/media/js/../lib/jquery/jquery-1.7.1.min.js"> .....

长话短说,我想使用phantomJS生成页面的静态(HTML)版本:

  1. 使用ajax请求填充某些部分。
  2. 保持css和JS链接不变,避免它们被内联。

1 个答案:

答案 0 :(得分:1)

@Ravi,请在Does PhantomJS capture all AJAX?

查看@Cyber​​maxs的答案

基本上你必须等待加载一个特定的元素。