从PhantomJS调用函数onLoadFinished回调
问题描述:
我几天前开始使用PhantomJS与NodeJS。 我正在使用此库与之集成:https://github.com/amir20/phantomjs-node。 一切都很完美,但是当我试图在页面加载(从回调)后继续我的applcation的流程时,出现了问题。从PhantomJS调用函数onLoadFinished回调
function doStuff()
{
page.open("http://stackoverflow.com/")
.then(function (status) {
function responseHandler(status) {
console.log("loaded");
iAmHere();
console.log("Here Again");
}
function loginAction() {
var btn = document.querySelector("#button");
btn.click();
}
page.property('onLoadFinished', responseHandler);
page.evaluate(loginAction)
}
);
}
function iAmHere(){
console.log("iAmHere");
}
的#键件触发一些网页加载时,ResponseHandler所函数被调用,其输出是:
信息:装载
和功能iAmHere不会被调用根本没有任何跟踪呼叫的日志。 我做错了什么?
谢谢!
答
是iAmHere()
当onLoadFinished
事件触发是因为您所提供的功能,responseHandler
,实际上是由PhantomJS JavaScript引擎执行不被调用,而不是Node.js的原因
因此,它无法访问您在Node.js脚本中定义的iAmHere()
函数。
你可以,而是要当页面加载完成这样的通知:
var phantom = require('phantom');
var sitepage = null;
var phInstance = null;
phantom.create()
.then(instance => {
phInstance = instance;
return instance.createPage();
})
.then(page => {
sitepage = page;
return page.open('https://stackoverflow.com/');
})
.then(status => {
console.log(status);
// Page loaded, do something with it
return sitepage.property('content');
})
.then(content => {
console.log(content);
sitepage.close();
phInstance.exit();
})
.catch(error => {
console.log(error);
phInstance.exit();
});
谢谢!为我工作 – maryum375