2016-10-23 2 views
2

私は(NodeJSからそれを使用して)PhantomJSでページをロードしていると私は、私は「このPhantomJSのdocument.location.reloadに従うには?

page.evaluate(function() { 
    return doRedirect() 
}).then(function(result) { 
    // result is null here 
}) 

ようPhantomJSからdoRedirect()を実行

... 
document.cookie = "key=" + assignedKey 
document.location.reload(true) 

が含まれているページdoRedirect()のJS機能がありますPhantomJSのようにdocument.location.reload(true)に従って、その新しいページの内容を返します。これはどうすればできますか?

答えて

1

document.location.reload()どこでもナビゲートせず、ページをリロードします。ブラウザの更新ボタンをクリックするようなものです。フロントエンドではすべて起きているが、サーバではなく、300 Redirectが起きている。

この関数を呼び出すだけで、PhantomJSがページのロードを完了するのを待ってから、その内容を尋ねます。

page.onLoadFinishedイベントを使用して、PhantomJSの読み込みが完了するまで待つことができます。さらに、ロード後にsetTimeout()を使用して、ページコンテンツが非同期にロードされるまでにさらに時間がかかることがあります。

var webPage = require('webpage'); 
var page = webPage.create(); 

page.onLoadFinished = function(status) { 
    // page has loaded, but wait extra time for async content 
    setTimeout(function() { 
    // do your work here 
    }, 2000); // milliseconds, 2 seconds 
}; 
+0

PhantomJSがページの読み込みを完了するのを待つ方法を教えてください。 'evaluate'関数の中で何かする必要がありますか? – user779159

+1

このコード例は、プレーンなPhantomJS用であり、OPが使用しているnode.js用のPhantomJSブリッジではないことに注意してください。 –

+0

ええ、コードは決定的なものではなく、非同期ロードを処理するさまざまな方法の例です。 – Soviut

関連する問題