PhantomJS; 如果我在page.evaluate()中设置一个变量,如何在page.evaluate()之外访问该变量的值

Tim*_*lee 3 javascript jquery phantomjs

使用PhantomJS考虑以下代码片段:

var reloadAfterLogin = false;
function(user, pass, debug){ // step 3 submit Login
   page.evaluate(function(user, pass, debug){
     if($("form").attr("action").indexOf("login.do") > 0){
       reloadAfterLogin = true;
       $('form').submit();
     }
   }, user, pass, debug);
 },
Run Code Online (Sandbox Code Playgroud)

据我了解,这不仅仅是一个范围问题.在page.evaluate()内部执行的代码是一个完整的独立JavaScript实例.我不得不承认我仍然很难解决PhantomJS如何工作但我需要访问page.evaluate()之外的reloadAfterLogin变量.我怎样才能做到这一点?

Ber*_*rgi 5

你可以returnevaluate回调.我想你想要的

function(user, pass, debug){ // step 3 submit Login
  reloadAfterLogin = page.evaluate(function(user, pass, debug){
    if($("form").attr("action").indexOf("login.do") > 0){
      $('form').submit();
      return true;
    }
    return false;
  }, user, pass, debug);
}
Run Code Online (Sandbox Code Playgroud)