Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.05.2017, 00:22
Интересующийся
Отправить личное сообщение для -FIXER- Посмотреть профиль Найти все сообщения от -FIXER-
 
Регистрация: 16.04.2017
Сообщений: 21

Помогите победить функции )
Всем привет. Помогите разобраться.
Делаю расширение с парсингом некоторой информации с сайта на котором присутсвует динамический поиск по товарам.
Логика построена таким образом, что программа пробегает по странице, собирает нужные товары, нажимает на кнопку "следующая страница" и затем собирает дальше товары. При всём этом сама страница сайта не обновляется полностью, а лишь подгружаются новые товары вместо старых с помощью js
Вопросов сразу два.
1. Как сделать, чтобы функция(действие, или ещё что-то) выполнялось после того как загрузятся динамические элементы после клика на кнопку "следующая страница". (т.е. не сама страница, а только элементы. document.addEventListener('DOMContentLoaded', function (){бла-бла-бла}) не работает.)
2. Решил реализовать это через setinterval выставил 2000, за 2 секунды всегда элементы успевают подгружаться. Но появилась проблема. setInterval требует вызов функции(в моём случае функция парсинга товаров), а функции, насколько я знаю, подгружаются перед выполнением всего скрипта и единожды. т.е. если я во время выполнения скрипта переключаю на другую вкладку(на другую страницу), то в функции остаётся спаршенна первая страница товаров. Что только не пробовал, сколько бы страниц не прогонял, всегда парсится только первая.
Заранее благодарю=)
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2017, 09:22
Кандидат Javascript-наук
Отправить личное сообщение для Diphenyl Oxalate Посмотреть профиль Найти все сообщения от Diphenyl Oxalate
 
Регистрация: 21.01.2017
Сообщений: 139

Повесить колбек на XMLHttpRequest-объект, который подгружает данные со следующей страницы.
Ответить с цитированием
  #3 (permalink)  
Старый 06.05.2017, 10:43
Интересующийся
Отправить личное сообщение для -FIXER- Посмотреть профиль Найти все сообщения от -FIXER-
 
Регистрация: 16.04.2017
Сообщений: 21

Спасибо, не знал что в расширениях можно post-get запросы посылать. А можно их посылать на другой домен? И если да, то что в манифесте надо прописать?
Ответить с цитированием
  #4 (permalink)  
Старый 06.05.2017, 11:32
Интересующийся
Отправить личное сообщение для -FIXER- Посмотреть профиль Найти все сообщения от -FIXER-
 
Регистрация: 16.04.2017
Сообщений: 21

А ещё момент подскажите. Не пойму немного логику. Почему 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++;
			}		}
		
	};
}
Ответить с цитированием
  #5 (permalink)  
Старый 06.05.2017, 19:21
Интересующийся
Отправить личное сообщение для -FIXER- Посмотреть профиль Найти все сообщения от -FIXER-
 
Регистрация: 16.04.2017
Сообщений: 21

Сообщение от Rise Посмотреть сообщение
-FIXER-, так значение csrf формируется при загрузке страницы, оно будет разным каждый раз, а без правильного значения csrf очевидно данные не отправятся сервером, так как он проверяет его, оно для этого и передается сюда и обратно. И не понял про переключение между вкладками, если идет динамическая подгрузка контента на одной странице, причем здесь другие вкладки?
По поводу вкладок, их нет. Они использованы в другом месте этого сайта но к делу не относятся. Прошу меня извинить за введение в заблуждение =).
А значение csrf не формируется при загрузке страницы каждый раз. Если не ошибаюсь этот параметр меняется каждый раз при смене куков, т.е. при перелогинивании на сайт. Это подтверждается ещё и тем, что я могу не реализовывая цикл вручную сделать 10 запросов, меняя лишь skip и не трогая csrf, и всё будет успешно. Тут какая-то другая проблема. Возможно сайт не воспринимает больше одного запроса в секунду(или в n миллисекунд). Не знаю, может ли такое быть.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пользовательские cобытия и функции jquery hurt3 jQuery 2 08.07.2013 09:13
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
Срочно, помогите с исправлением функции) Slawaq Элементы интерфейса 20 23.05.2010 19:48
Помогите прокомментировать функции ! Help!!! Deep Общие вопросы Javascript 4 24.05.2008 18:42