Помогите победить функции )
Всем привет. Помогите разобраться.:help:
Делаю расширение с парсингом некоторой информации с сайта на котором присутсвует динамический поиск по товарам. Логика построена таким образом, что программа пробегает по странице, собирает нужные товары, нажимает на кнопку "следующая страница" и затем собирает дальше товары. При всём этом сама страница сайта не обновляется полностью, а лишь подгружаются новые товары вместо старых с помощью js Вопросов сразу два. 1. Как сделать, чтобы функция(действие, или ещё что-то) выполнялось после того как загрузятся динамические элементы после клика на кнопку "следующая страница". (т.е. не сама страница, а только элементы. document.addEventListener('DOMContentLoaded', function (){бла-бла-бла}) не работает.) 2. Решил реализовать это через setinterval выставил 2000, за 2 секунды всегда элементы успевают подгружаться. Но появилась проблема. setInterval требует вызов функции(в моём случае функция парсинга товаров), а функции, насколько я знаю, подгружаются перед выполнением всего скрипта и единожды. т.е. если я во время выполнения скрипта переключаю на другую вкладку(на другую страницу), то в функции остаётся спаршенна первая страница товаров. Что только не пробовал, сколько бы страниц не прогонял, всегда парсится только первая.:help: Заранее благодарю=) |
Повесить колбек на XMLHttpRequest-объект, который подгружает данные со следующей страницы.
|
Спасибо, не знал что в расширениях можно post-get запросы посылать. А можно их посылать на другой домен? И если да, то что в манифесте надо прописать?
|
А ещё момент подскажите. Не пойму немного логику. Почему o = 1, после выполнения кода. По логике o=i=9 должно быть
var post = ""; var o=0; var "xhr" = new XMLHttpRequest(); label1: for(i=0;i<10;i++){ "xhr".open('post', '/shop', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // Отправляем кодировку xhr.send("order=-1&skip="+i+"&filter=&range=0&_csrf=SrEaDkdk-wbKC_2ju0-20gTDo2NY572KMVJ4"); // Отправляем POST-запрос xhr.onreadystatechange = function() { // Ждём ответа от сервера if (xhr.readyState == 4) { // Ответ пришёл if(xhr.status == 200) { // Сервер вернул код 200 (что хорошо) //if(xhr.responseText=="[]") break label1; post=post+xhr.responseText; o++; } } }; } |
Цитата:
А значение csrf не формируется при загрузке страницы каждый раз. Если не ошибаюсь этот параметр меняется каждый раз при смене куков, т.е. при перелогинивании на сайт. Это подтверждается ещё и тем, что я могу не реализовывая цикл вручную сделать 10 запросов, меняя лишь skip и не трогая csrf, и всё будет успешно. Тут какая-то другая проблема. Возможно сайт не воспринимает больше одного запроса в секунду(или в n миллисекунд). Не знаю, может ли такое быть. |
Часовой пояс GMT +3, время: 08:17. |