DIY, web, coffee
Автоматизирую все и вся, ремонтирую что сломалось, трачу время на just-for-fun проекты. Пишу про хардвар и софтвар и не только.
http://jem-space.ru
Связь со мной: @jem_jem
Донаты на припой и хостинги: https://bit.ly/2MKcRoJ
Post #568
1.06K

Недавно для одного сайта писал бота, который запускался в браузере через мое любимое расширение для юзер скриптов tempermonkey.
В скрипте нужно было заполнять форму. Обнаружил, что изменение полей в форме при помощи js не имеют никакого эффекта (видимо потому что событие change не отрабатывает). Самый прикол, что и вызов события клика на элементе, изменение значения и повторный клик, тоже не давали эффекта. Более того, вызов события через new Event и dispatchEvent не работал.
Помог только вызов document.createEvent
В скрипте нужно было заполнять форму. Обнаружил, что изменение полей в форме при помощи js не имеют никакого эффекта (видимо потому что событие change не отрабатывает). Самый прикол, что и вызов события клика на элементе, изменение значения и повторный клик, тоже не давали эффекта. Более того, вызов события через new Event и dispatchEvent не работал.
Помог только вызов document.createEvent
const event = document.createEvent("Event");
event.initEvent("change", true, true);
let locationSelector = document.querySelector('#select');
locationSelector.value = '2018'
locationSelector.dispatchEvent(event);
Кстати, чем больше аргументов передаешь в initEvent со значением true, тем лучше браузер поймет насколько сильно ты хочешь, чтоб событие сработало)- 👏 6
- 👍 5
- 😁 2










