PhantomJS: сбой захвата экрана загрузки данных веб-страницы с помощью $.POST

#jquery #ajax #phantomjs #screen-capture

#jquery #ajax #phantomjs #захват экрана

Вопрос:

Я использовал PhantomJS для захвата экрана моего веб-сайта.

Случается, что на веб-страницах, которые загружают данные с помощью вызова jQuery Ajax, вместо запроса данного remoteUrl , PhantomJS запрашивает текущий URL-адрес веб-страницы. Это приводит к повторному включению текущей страницы в текущую страницу для данного примера:

Этот код выполняется $('document').ready() на веб-странице, на которой я пытаюсь сделать захват экрана:

 remoteUrl = $('#my-placeholder').data('api-url');

$.post(
    remoteUrl,
    {
        foo: bar
    },
    function(response){
        $('#my-placehoder').html(response);

        // instead of retrieving remoteUrl's content, 
        // result contains the same content as current page
    }
);
  

Вот код, который я использую с PhantomJS:

 page.open(address, function (status) {
    if (status !== 'success') {
        console.log('Unable to load the address!');
        phantom.exit();
    } else {
        page.evaluate(function() {
            document.body.bgColor = 'white';
        });
        var arr = page.evaluate(function () {
            var pageWidth = document.body.clientWidth;
            var pageHeight = document.body.clientHeight;

            return [pageWidth, pageHeight];
        });

        page.viewportSize = { width: arr[0], height: arr[1] };
        page.render(output);
        phantom.exit();
    }
});
  

Есть ли какие-то ограничения в PhantomJS по этому поводу? Или я делаю что-то не так?

Я искал какие-либо подсказки, которые могут помочь мне решить эту проблему, но Google остается бесполезным. Спасибо!

Редактировать: Хорошо, после некоторого теста с привязкой сообщения об ошибке и консоли я получил это

 TypeError: 'undefined' is not a function (evaluating '$(".is-clickable:not(.is-disabled)").clickEvent()')

  :9327
  :4
  :4
  :4
  

Чего не происходит в обычном браузере. Похоже, это связано с отсутствием доступности jQuery?

Комментарии:

1. Это проблема времени. Ваш захват происходит до того, как скрипт завершит загрузку фактического содержимого сайта. Пожалуйста, добавьте код PhantomJS, который вы используете для захвата веб-страницы, в свой вопрос.

2. Вот сценарий PhantomJS: gist.github.com/splio-aleroux/f3e7aaedaa279d084a00

3. Но PhantomJS выполняет $.POST при выполнении обратного вызова, и я вижу неправильные данные, загруженные при захвате экрана

4. Подсказка: вы всегда можете отредактировать свой вопрос и исправить ошибки или внести дополнения. Нет необходимости излагать половину вопроса в суть.

5. хорошо, спасибо за совет