Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как выбрать <select> и активировать последствия? (https://javascript.ru/forum/events/83404-kak-vybrat-select-i-aktivirovat-posledstviya.html)

jaroslav.tavgen 30.11.2021 14:21

Как выбрать <select> и активировать последствия?
 
В каком-то скрипте (например Google Translate https://www.w3schools.com/howto/howt..._translate.asp ) если выбрать один из вариантов в меню <select>, то активируется вундервафля (активируются окна, подгружаются данные, спутник отправляется в космос, Вселенная аннигилируется).

Если я нажму CTRL-Shift-I в браузере и наберу в консоли

document.getElementsByTagName("select")[0].value="dayteMneVundervaflyu"
,

то выберется нужный мне пункт меню, но вундервафля не активируется. А как сделать так, чтобы активировалась? В Селениуме я так делал, а как делать в чистом ДЖС из браузера не знаю.

voraa 30.11.2021 14:56

Попробуйте потом
document.getElementsByTagName("select")[0].dispatchEvent(new Event('change'));

jaroslav.tavgen 30.11.2021 15:19

Цитата:

Сообщение от voraa (Сообщение 541979)
Попробуйте потом
document.getElementsByTagName("select")[0].dispatchEvent(new Event('change'));

Очень странный эффект: в случае с Google Translate работает! Но только если написать 2 раза:

document.getElementsByTagName("select")[0].dispatchEvent(new Event('change')); document.getElementsByTagName("select")[0].dispatchEvent(new Event('change'));

voraa 30.11.2021 16:11

Может это как то связано с тем, что вы вводите в консоле.
В скрипте на странице хватает одного раза.

jaroslav.tavgen 30.11.2021 17:09

Цитата:

Сообщение от voraa (Сообщение 541981)
Может это как то связано с тем, что вы вводите в консоле.
В скрипте на странице хватает одного раза.

В скрипте на странице нужно не только два раза ставить, но и time delay делать:

<p>Labas rytas!</p>
<div id="google_translate_element"></div>
<script>
function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'lt'}, 'google_translate_element');
}
</script>
<script type="text/javascript" src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<script>
setTimeout(function(){
  document.getElementsByTagName("select")[0].dispatchEvent(new Event('change')); 
  document.getElementsByTagName("select")[0].dispatchEvent(new Event('change'));

}, 1000);
</script>
</body>
</html>

jaroslav.tavgen 30.11.2021 17:16

Хотя можно и так:

<p>Labas rytas!</p>
<div id="google_translate_element"></div>
<script>
function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'lt'}, 'google_translate_element');
}
</script>
<script src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<script>
setTimeout(function(){
  document.getElementsByTagName("select")[0].value="ru";
  document.getElementsByTagName("select")[0].dispatchEvent(new Event('change'));

}, 1000);
</script>
</body>
</html>

voraa 30.11.2021 19:12

Я проверял не сразу при загрузке страницы, а после какого-нибудь клика.


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