Javascript 是否有方法将对象传递给casper.js';求值()?
我看到了这个线程,看起来无法将复杂对象传递给Javascript 是否有方法将对象传递给casper.js';求值()?,javascript,node.js,web-scraping,phantomjs,casperjs,Javascript,Node.js,Web Scraping,Phantomjs,Casperjs,我看到了这个线程,看起来无法将复杂对象传递给evaluate() 因此,如果我编写一个对象并希望在不同的evaluate()之间共享,我该如何做 比如说像这样一个愚蠢的对象,我想一次又一次地使用getData函数: var testObj = (function() { var a = 1; function test1(b) { return (a+b); } return { getData : function(arg) { return
evaluate()
因此,如果我编写一个对象并希望在不同的evaluate()
之间共享,我该如何做
比如说像这样一个愚蠢的对象,我想一次又一次地使用getData函数:
var testObj = (function() {
var a = 1;
function test1(b) {
return (a+b);
}
return {
getData : function(arg) {
return (test1(3) + arg);
}
}
})();
有可能的解决办法吗
更新1:
我的意思是用函数传递对象。如下所示,但它不起作用(返回null
):
不幸的是,您不能将复杂结构传递给evaluate(),因为传递给evaluate()的任何arg都是某种JSON.parse(JSON.stringify(arg)) 但这并不意味着你不能通过另一种物体 关于如何传递JSON对象进行求值的示例。
var casper=require('casper').create();
casper.start('about:blank',function(){
var JSONObject={arg1:'val1',arg2:'val2'};
this.echo(casper.evaluate)(函数(myObject){
返回JSON.stringify(myObject);
},JSONObject));
});
casper.run(函数(){
这是exit();
});
有关如何传递基本对象进行求值的示例。
var casper=require('casper').create();
casper.start('about:blank',function(){
obj=新对象();
obj.param1=“value1”;
obj.param2=“value2”;
this.echo(casper.evaluate)(函数(myObject){
返回JSON.stringify(myObject);
},obj));
});
casper.run(函数(){
这是exit();
});
关于如何传递带有要计算的参数的函数的示例。
var casper=require('casper').create();
casper.start('about:blank',function(){
var arg1=“value1”;
var arg2=“value2”;
echo(casper.evaluate(myFunction,arg1,arg2));
});
casper.run(函数(){
这是exit();
});
函数myFunction(arg1、arg2){
返回arg1+“-”+arg2;
}
您可以使用clientScripts选项传递脚本,如jQuery-。您可能也可以对自定义脚本执行相同的操作,并对代码进行良好的分离
var casper = require('casper').create({
clientScripts: ["includes/jquery.min.js", "lib/my-custom-script.js"]
});
casper.start(function () {
this.evaluate(function () {
window.customFunction();
});
});
lib/my-custom-scripts.js:
window.customFunction = function () { /* do stuff */ };
希望这有帮助
window.customFunction = function () { /* do stuff */ };