try {
var Spooky = require("spooky");
} catch (e) {
console.log(e);
}
var spooky = new Spooky({
capser: {
logLevel: "debug",
verbose: true
},
child: {
command: "./casperjs/bin/casperjs",
port: 8081,
spooky_lib: "./node_modules/spooky/"
}
}, function (err) {
if(err) {
console.log(err);
}
spooky.start("http://www.google.com");
spooky.then(function () {
console.log("7331");
this.emit("printmsg", "1337");
});
spooky.run();
});
spooky.on("printmsg", function (msg) {
console.log(msg);
});
spooky.on("error", function (e) {
console.error(e);
});
运行时,1337
会显示,但7331
不会。为什么是这样?我问的原因是因为当您想要记录某些变量的值时,它很难调试。
此外,如果您想像这样更改 then 函数:
spooky.then(function () {
var self = this;
this.evaluate(function () {
self.emit("printmsg", "Hello World!");
});
});
这不起作用,因为evaluate
无法访问 self 变量。在 PhantomJS 中你可以做到,page.evaluate(function (self) {
但是当我用 Spooky 尝试它时,它不起作用。所以当你想记录数据时是非常困难的。
有没有解决的办法?