Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Нажать на кнопки после полной загрузки страницы (https://javascript.ru/forum/events/83832-nazhat-na-knopki-posle-polnojj-zagruzki-stranicy.html)

firsmember 29.03.2022 11:47

Нажать на кнопки после полной загрузки страницы
 
Добрейшего денечка Господа.

На сайте есть несколько кнопок (количество может быть любым)
<input type="button" class="ays_next start_button action-button" value="Начать">
нужно после полной загрузки страницы нажать по 1 разу на эти кнопки.. Важно На сайте есть точно такие же кнопки (с такими же атрибутами и классами) но с другим текстом - Важно нажать на все кнопки именно с class="ays_next start_button action-button" и value="Начать"

Заранее премного вам благодарен.

voraa 29.03.2022 14:09

window.onload = () => {
   document.querySelectorAll('input.ays_next.start_button.action-button[value="Начать"]')
      .forEach(b => b.click());
}

firsmember 30.03.2022 07:38

Цитата:

Сообщение от voraa (Сообщение 544412)
window.onload = () => {
   document.querySelectorAll('input.ays_next.start_button.action-button[value="Начать"]')
      .forEach(b => b.click());
}

Подскажите еще пожалуйста, как сделать задержку в 3 секунды после полной загрузки страницы, а то есть ощущение, что некоторые скрипты которые мне нужны выполняются после того, как мы кликнули по кнопкам.

Или может можно выполнить его исключительно после того, как все скрипты на странице отработали уже?

рони 30.03.2022 08:05

Цитата:

Сообщение от firsmember
как сделать задержку в 3 секунды

Планирование: setTimeout и setInterval

firsmember 30.03.2022 08:09

как то странно работает очень...

Если пишу
window.onload = () => {
	   document.querySelectorAll('input.ays_next.start_button.action-button[value="Начать"]')
		  .forEach(b => b.click());
	}


То по человечески срабатывает только клик по первой кнопке, а еси пишу

window.onload = () => {
	   document.querySelectorAll('input.ays_next.start_button.action-button[value="Начать"]')
		  .forEach(b => b.click());
	}
	window.onload = () => {
	   document.querySelectorAll('.calck_quiz_nav input.ays_next.start_button.action-button[value="Начать"]')
		  .forEach(c => c.click());
	}


т.е. вторым скриптом указываю на вторую кнопку, то он выполняет только клик по 2й кнопке... :(

voraa 30.03.2022 08:47

А что должно происходить при кликах по кнопкам ?

Цитата:

Сообщение от firsmember
т.е. вторым скриптом указываю на вторую кнопку, то он выполняет только клик по 2й кнопке...

Естественно. Вы же вторым window.onload переопределяете первый.

firsmember 30.03.2022 10:02

Цитата:

Сообщение от voraa (Сообщение 544428)
А что должно происходить при кликах по кнопкам ?

У меня плагин квиза, и перед его запуском стоит кнопка начать, так вот разработчики плагина уверяют что эта кнопка обязательна и без нее никак, по этому мой единственный выход пройтись по странице и нажать на все эти кнопки, чтобы пользователь сразу видел квиз, а не кнопку...

Цитата:

Сообщение от voraa (Сообщение 544428)
Естественно. Вы же вторым window.onload переопределяете первый.

Как тогда нужно сделать?

рони 30.03.2022 10:07

Цитата:

Сообщение от firsmember
Как тогда нужно сделать?

по ссылке описание вашей ошибки, и её решение
addEventListener

voraa 30.03.2022 10:12

Цитата:

Сообщение от firsmember
по этому мой единственный выход пройтись по странице и нажать на все эти кнопки, чтобы пользователь сразу видел квиз, а не кнопку...

Я не спрашивал зачем это надо, а что должно происходить при нажатии. Меняется ли как нибудь DOM при нажатии и как?
Цитата:

Сообщение от firsmember
То по человечески срабатывает только клик по первой кнопке,

А что значит, что не срабатывают другие? Или срабатывают но не по человечески?
Функция click() - синхронная. Пока полностью не отработает обработчик события дальше не пойдет. Т.е пока полностью не отработает обработчик нажатия первой кнопки, не будет выполняться click() для второй и следующих.
Что происходит в этих обработчиках - надо разбираться с библиотекой.

firsmember 30.03.2022 10:24

Цитата:

Сообщение от voraa (Сообщение 544431)
Я не спрашивал зачем это надо, а что должно происходить при нажатии. Меняется ли как нибудь DOM при нажатии и как?

Ну конечно, выполняется скрипт, скрывается эта кнопка и показывается киз.

Цитата:

Сообщение от voraa (Сообщение 544431)
А что значит, что не срабатывают другие? Или срабатывают но не по человечески?
Функция click() - синхронная. Пока полностью не отработает обработчик события дальше не пойдет. Т.е пока полностью не отработает обработчик нажатия первой кнопки, не будет выполняться click() для второй и следующих.
Что происходит в этих обработчиках - надо разбираться с библиотекой.

Это значит, что по отдельности они срабатывают, а все вместе нет.


Причем в плагине есть возможность включить автозапуск квиза, но там как раз есть пометка, что он будет работать только в том случае, если квиз всего 1 на странице.

Вот хотелось бы обойти все это..


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