Javascript PhantomJS:在PhantomJS中调用用户定义/自定义函数

Javascript PhantomJS:在PhantomJS中调用用户定义/自定义函数,javascript,phantomjs,referenceerror,Javascript,Phantomjs,Referenceerror,当我调用在Phantom的page.evaluate()中自己定义的函数时,我遇到了一个ReferenceError;正确的方法是什么 例如: function mySweetFunction(item) { // process item.... } page.evaluate(function(){ var item= document.getElementsById('item'); mySweetFunction(item); }); 然后我将得到错误

当我调用在Phantom的page.evaluate()中自己定义的函数时,我遇到了一个ReferenceError;正确的方法是什么

例如:

function mySweetFunction(item) {
    // process item....

}

page.evaluate(function(){

    var item= document.getElementsById('item');

    mySweetFunction(item);

});
然后我将得到错误:

ReferenceError:找不到变量:mySweetFunction

正确的方法是什么


mySweetFunction相当大,我更愿意将其保留在页面之外。如果可能,请评估(…)。

如果要在页面内使用函数。评估()必须先将其放在那里:

page.evaluate(function(){

    function mySweetFunction(item) {
        // process item....
    }

    var item = document.getElementsById('item');

    mySweetFunction(item);

});

是的,但是功能非常大,所以为了清晰起见,我想把它放在外面…@Xsmael:不幸的是,这基本上是唯一的方法。
page.evaluate
函数提取作为字符串传递给它的函数,然后将该函数注入phantom.js中页面的javascript解释器(它不是运行代码的解释器)以进行eval'd@slebetman感谢这些细节,增进了我的理解。