1

私は 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();
});

私が抱えている問題、requirejs や Google Analytics などの一部の JS スクリプトは、関連する 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 のリンクをそのままにして、インライン化しないようにします。
4

1 に答える 1

1

@Ravi、 Does PhantomJS capture all AJAX?で @Cyber​​maxs の回答を確認してください。

基本的に、特定の要素が読み込まれるまで待つ必要があります。

于 2013-08-23T15:06:20.433 に答える