Как изменить переменную injectl для фантомного js, используя node-webshot - PullRequest
0 голосов
/ 29 ноября 2018

В настоящее время я использую 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.В документации по 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...