1
Phantomのpage.evaluate()内で自分自身を定義した関数を呼び出すとReferenceErrorが発生します。それを行う正しい方法は何ですか?例えばPhantomJS:ファントム内のユーザー定義/カスタム関数を呼び出す
:
function mySweetFunction(item) {
// process item....
}
page.evaluate(function(){
var item= document.getElementsById('item');
mySweetFunction(item);
});
その後、私はエラーを取得します:
ReferenceError: Can't find variable: mySweetFunction
これを行うための適切な方法は何ですか?
mySweetFunctionはかなり大きいので、可能であればpage.evaluate(...)の外に置いておきたいと思います。
いやが、しかし機能は本当に大きいですので、私は明確にするためにそれを締め出すたかったです.. .. – Xsmael
@ Xsmael:残念ながら、これは基本的にこれを行う唯一の方法です。 'page.evaluate'関数は、渡された関数を文字列として抽出します。この文字列はphantom.js(コードを実行しているインタプリタではありません)のページのjavascriptインタプリタに挿入され、eval'dになります。 – slebetman
@slebetman thanksこれらの詳細については、私の理解が向上しました。 – Xsmael