Phantomjs评估不显示DOM的变化

时间:2017-03-10 14:50:05

标签: javascript phantomjs evaluate

这是我的html文件:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="Content-Script-Type" content="text/javascript"/>
</head>
<body>
    <label for=payload>Payload</label><br>
    <textarea id="editor" cols=100 rows=30></textarea><br> 
</body>

phantomjs脚本是:

var bodyParser = require('body-parser'),
phantom = require('phantom');

var bk = {"abc":"def"};
//Create Phantom session
var _phSession;
var _page;
var log = console.log;
var config = { logger: { warn:log, info:log, error:log } };
phantom.create([], config).then(function(_session) {
  if (_session) {
    console.log('Phantom session created');
    _phSession = _session;
    return _phSession.createPage();
  }
})
.then(function(page) {
  _page = page;
  _page.property('onConsoleMessage', function(msg) {
    console.log(msg);
  });
  _page.property('onLoadStarted', function() {
    console.log("load started");
  });
  _page.property('onLoadFinished', function() {
    console.log("load finished");
  });
  return _page.open("http://myserver/my.html");
})
.then(function(status) {
  console.log('Open status:' + status);
  if (status != 'success') return;
   _page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js')
.then(function() {
  //set the new bkstore 
  _page.evaluate(function(bk) {
    jQuery('#editor').val(JSON.stringify(bk));
    return jQuery('#editor').val();
  }, bkstore)
  .then(function(res) {
    console.log('Return from set:' + res);
  })
});

setTimeout(function() {
  _page.evaluate(function() {
    console.log('============== EVALUATE AFTER LOADED ===================');
    //return jQuery('#editor').val();
    return jQuery('body').html(); 
  })
  .then(function(res) {
    console.log('html:' + res);
  });
}, 1000);

在我用bk设置#editor内容后,我收回了我设置的值。 在setTimeout的块中,如果我再次尝试获取#editor的内容,我仍然可以获得bk的值。 但是我得到了body标签的html,我没有在#editor中看到bk的值。

有谁知道问题是什么?

0 个答案:

没有答案