以下のケースでは、page.evaluate で変数を渡すことは可能ですか?
function myFunction(webpage, arg1, arg2){
var page = require('webpage').create();
page.viewportSize = { width: 1920, height: 1080 };
page.open(webpage, function (status){
if (status == 'success') {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", function(){
page.evaluate(function(){
arg = arg1 + arg2;
console.log(arg);
});
});
}
else { phantom.exit(); }
});
}
インターネットで見つかったいくつかの方法を試しましたが、変数にアクセスすることは実際に不可能ではありませんでした。
ご協力をよろしくお願いします:)
ベストアンサー1
いつものように、答えはドキュメンテーション機能evaluate
:
PhantomJS 1.6 以降では、JSON シリアル化可能な引数を関数に渡すことができます。次の例では、DOM 要素のテキスト値が抽出されます。次の例では、前の例と同じ最終目的が達成されますが、要素は、evaluate 呼び出しに渡されるセレクターに基づいて選択されます。
次の例は使用方法を示しています。
var title = page.evaluate(function(s) {
return document.querySelector(s).innerText;
}, 'title');
console.log(title);