Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обработка выбора элемента списка (https://javascript.ru/forum/events/83301-obrabotka-vybora-ehlementa-spiska.html)

ksa 12.11.2021 14:34

Цитата:

Сообщение от Igal
Дело в том, что я уже 2-й день парюсь и не могу понять как они вообще это сделали!? Где та функция которую они вызывают?

В браузере смотрел?
Есть ли какие-то обработчики на select?

Igal 12.11.2021 14:39

Цитата:

Сообщение от рони (Сообщение 541377)
Igal,
как вариант ...
var event = document.createEvent("Event");
      event.initEvent("change", true, true);
      var select = document.querySelector('[data-set-pagination]');
      select.value = 24;
      select.dispatchEvent(event);

Проверил. Результат тот же.

Igal 12.11.2021 14:43

Цитата:

Сообщение от ksa (Сообщение 541378)
В браузере смотрел?
Есть ли какие-то обработчики на select?

Искал по все возможным контекстам. Текст вручную приводил в порядок. Вытащил тексты всех скриптов отдельно. Перечитал как работать со списками. Я, в принципе понять не могу как можно обработать изменение на форме, если нет <form> и из <select> или <option> действие не назначено.

ksa 12.11.2021 14:47

Igal, JS событийный язык... Должно быть какое-то событие. Именно на него и реагируют, меняя количество элементов на странице.

Igal 12.11.2021 14:51

Цитата:

Сообщение от ksa (Сообщение 541381)
Igal, JS событийный язык... Должно быть какое-то событие. Именно на него и реагируют, меняя количество элементов на странице.

Абсолютно согласен. Я по тому и обращаюсь к гуру, что у меня мысли закончились - все до чего свои мозги дотянулись перебрал. Если можете посмотреть, адрес страницы в начале темы (это сайт магазина в Тюмени).

ksa 12.11.2021 15:02

Цитата:

Сообщение от Igal
Если можете посмотреть, адрес страницы в начале темы (это сайт магазина в Тюмени).

Неее. Я на сторонние ресурсы не хожу. :)

voraa 12.11.2021 15:30

Там все события привязаны к body и какому то родительскому div.
Сделано судя по всему так. Там нет реакции именно на change для этого select.
Есть реакция на любой change для всех select, есть реакция на input для всех инпутов. Потом идет ajax запрос со всеми параметрами и возвращается html текст, который вставляется в соответствующий div
В этом html все - и левая колонка, и селекты для сортировки и количества и сами товары.
Возвращается <div class="grid-container">.... </div>
Обращение к серверу идет из app.js. Но он минимизирован - сказать откуда точно - не могу

Igal 13.11.2021 10:59

Цитата:

Сообщение от ksa (Сообщение 541384)
Неее. Я на сторонние ресурсы не хожу. :)

Можно зайти через 2gis Тюмень, компания называется "крепыж сеть магазинов". 2Gis точно безопасен.
Проблема оказалась в браузере! Через манифест хрома проверил варианты. Выкладываю те которые отработались.

Сам манифест:
{
"manifest_version": 3
,"name": "Pars"
,"short_name": "Pars"
,"version": "1.0"

,"content_scripts": [
{"matches": ["https://zakrepi.ru/*"],"js": [ "zakrepi.js" ]}
]
}

Файл zakrepi.js
Вариант 1:
var lv_sort=document.querySelector("nav.sort-wrap");
if (lv_sort!=null) { // Если нужный нам узел есть
const lv_event = new Event('change', {bubbles: true}), lv_select = document.querySelector('[data-set-pagination]');
lv_select.value = 24;
lv_select.dispatchEvent(lv_event);
}

Вариант 2:
var lv_event = document.createEvent('Event');
lv_event.initEvent('change', true, true);
var lv_select = lv_sort.querySelector('[data-set-pagination]');
lv_select.value = 36;
lv_select.dispatchEvent(lv_event);


Огромное человеческое спасибо Рони


Часовой пояс GMT +3, время: 02:03.