从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(); 
    }); 
+0

谢谢!为我工作 – maryum375