Подтвердить что ты не робот

Выполняет ли Phantom.js весь AJAX?

У меня есть базовое приложение, в котором есть тонна AJAX. (каждая загрузка страницы приводит к 5-6 вызовам ajax), потому что у меня много просмотров и внутренних просмотров в этих представлениях,

если я запустил Phantom.js, могу ли я получить окончательный результат html?

Конечный результат - это то, что пользователь видит после всех моих вызовов ajax.

4b9b3361

Ответ 1

PhamtonJs - это безгласный WebKit с API JavaScript. При сканировании страницы PhatomJs загрузит все запросы зависимых лиц, такие как изображения, js, css... Он также будет выполнять вызовы JS и ajax. Однако обратный вызов onLoaded вызывается, когда страница заканчивает загрузку, а не когда ожидающих запросов нет. Итак, вы должны использовать трюк для этого.

Существует два способа решения проблемы:

  • Подождите, пока "что-то" не будет эффективно изменено на вашей странице (элементе). Лучший пример: waitFor.js
  • Подождите несколько секунд, пока не будут получены запросы.

Ответ 2

Phantom.js может запускать javascript на вашей странице, поэтому это должно работать. Существует статья описывающая, как предоставить искателям красивые версии сайтов javascript, используя Phantom.js.

Обязательно дайте Phantom.js достаточно времени для завершения вызовов ajax, как описано в .

Ответ 3

Вы можете использовать $.active вместе с waitFor.js script, который возвращает нет активного подключения к серверу, и нам нужно дождаться, когда он будет равен 0 для завершения всех запросов.

Дополнительная информация: jQuery.active функция

Ответ 4

Если у вас есть доступ к javascript-кодам сайта, кроме waitFor(), я думаю, вы можете сделать ваши запросы ajax синхронными. Это иногда проще и точнее.