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 で試してみるとうまくいきません。そのため、必要なときにデータをログに記録することは非常に困難です。
これを回避する方法はありますか?