如何使用node-webshot更改幻影js的注入变量

时间:2018-11-29 20:33:08

标签: javascript phantomjs

我当前正在运行express js,并且我有一个打开phamton js的过程,然后对页面进行了截屏。我需要能够设置一个将从phamtom js中读取的变量。这是完整的挑战。

这是我的服务器js代码的一部分:

var express = require('express');
var app = express();
app.use( bodyParser.urlencoded() );

// your express configuration here
var httpServer = http.createServer(app);
// For http
httpServer.listen(8080);


app.post('/', function (req, res) {
    console.log(req.body);
    var firstLine = req.body.firstLine;
    var secondLine = req.body.secondLine;
    var previewID = req.body.previewId;
    var productPlate = req.body.prodName;
    res.header('Access-Control-Allow-Origin', 'https://example.com');
    res.header('Access-Control-Allow-Methods', 'GET, POST, PUT');
    res.header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
    takeWebshot(firstLine, secondLine, previewID, productPlate)
    res.end()
});

takeWebshot()是运行节点网络快照的功能。在node-webshot文档中,它指出我可以传递幻影js回调并将其序列化。因此,代码如下:

function takeWebshot(fLine, sLine, pID, prodPlate) {
    var options = {
      onLoadFinished: {
        fn: function() {
          document.getElementById("user_input").value=this.fLineSnapshot;
          document.getElementById("second_user_input").value=this.sLineSnapshot;
          document.getElementById("preview_btn").click();
        },
        context: {
          fLineSnapshot: fLine,
          sLineSnapshot: sLine,
        }
      },
      takeShotOnCallback: true,
      captureSelector: '#img_preview_fancybox'
    };

然后在此处实例化网络快照:

webshot(exxample.com/testy.html', '../screenshot/' + pID +'.png', options, function(err) {
  if (err) return console.log(err);
  console.log('OK');
});

我的挑战是testy.html上有一个需要动态设置的变量。我试图通过像这样放置onLoadFinished来传递该变量:

  onLoadFinished: {
    fn: function() {
      var productName = 'Delaware Plate Hat';

在这里我添加了它,以便可以将其传递到幻像回调中,但这不起作用。有什么想法可以传递这个js变量吗?

0 个答案:

没有答案