Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Имитация клика мыши (https://javascript.ru/forum/events/62173-imitaciya-klika-myshi.html)

igommon 28.03.2016 10:19

Имитация клика мыши
 
Привет, спецы! Как начинающий, прошу помощи. Делаю редирект на сайт, на странице которого нужно кликнуть по кнопке "Продолжить", после которого будет осуществлен переход на другой нужный мне сайт. Вопрос. Можно ли в моем сайте организовать программно имитацию физического клика мыши, чтобы процесс перехода осуществлялся автоматически с небольшой задержкой? Спасибо.

Strongman 28.03.2016 10:30

Ну вот к событию onclick кнопки привязывается функция. Вызвать просто эту функцию да и все. Если ее нет, т.е. написано вот так:
b1.onclick = function(){};

где b1 это
<input type="button" id="b1"><input>

то создайте ее, т.е. напишите вот так:
b1.onclick = bc;
function bc(){};

Dilettante_Pro 28.03.2016 10:48

igommon,
Для программного вызова события используется метод trigger
http://jquery.page2page.ru/index.php...82%D0%B8%D1%8F

igommon 28.03.2016 17:00

Спасибо, друзья! Буду пробовать.

Alex_63 29.03.2016 18:42

igommon,
С использованием jQuery - все просто,
$(".селектор").click();

или
$(".селектор").trigger("click");

flyte 05.07.2018 19:41

Цитата:

Сообщение от Alex_63 (Сообщение 412384)
igommon,
С использованием jQuery - все просто,
$(".селектор").click();

или
$(".селектор").trigger("click");

работает оно хорошо, а как реализовать одновременный клик сразу 20ти кнопок?

рони 05.07.2018 20:11

Цитата:

Сообщение от flyte
а как реализовать одновременный клик сразу 20ти кнопок?

Цитата:

Сообщение от flyte
работает оно хорошо,

так оно у вас работает или нет?

flyte 05.07.2018 20:36

Цитата:

Сообщение от рони (Сообщение 489098)
так оно у вас работает или нет?

нажимает только на первый button и страница перезагружается

flyte 05.07.2018 20:40

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

рони 05.07.2018 21:21

flyte,
сделайте минимальный макет

j0hnik 06.07.2018 00:10

Цитата:

Сообщение от flyte (Сообщение 489099)
нажимает только на первый button и страница перезагружается

А если ручками нажимать не перезагружается?

flyte 06.07.2018 09:19

Цитата:

Сообщение от j0hnik (Сообщение 489113)
А если ручками нажимать не перезагружается?

перегружается
в том то и дело, у меня есть 20 картинок и соответственно 20 input type="submit" для удаления их, на сайте я ничего менять не могу, делаю надстройку в greasmonkey чтобы одним кликом удалять все сразу, а не по одной, или это не реально реализовать?

Nexus 06.07.2018 09:53

flyte, найдите общий для всех кнопок селектор и в цикле кликните по каждой, как-то так:
[].forEach.call(document.querySelectorAll('.button'),function(node){
    node.dispatchEvent(new Event('click'));
});

Если на клиенте сделано так, что нельзя одновременно отправить на сервер несколько запросов, то так просто не выйдет.
Пример:
<button type="button" class="remove">Кнопка 1</button>
<button type="button" class="remove">Кнопка 2</button>

<button type="button" class="control">Кликнуть по обеим</button>
<script>
	(function(){
		let inProcess=false;

		const buttons=[].slice.call(document.querySelectorAll('.remove'));
		buttons.forEach(function(node){
			node.addEventListener('click',function(){
				alert(this.textContent+' нажата');
				if(inProcess)
					return;

				inProcess=true;
				setTimeout(function(that){
					that.parentNode.removeChild(that);

					alert(that.textContent+' удалена');
					inProcess=false;
				},1000,this);
			});
		});
	})();

	document.querySelector('.control').addEventListener('click',function(){
		[].forEach.call(document.querySelectorAll('.remove'),function(node){
				node.dispatchEvent(new Event('click'));
		});
	});
</script>

flyte 06.07.2018 12:56

Цитата:

Сообщение от Nexus
Если на клиенте сделано так, что нельзя одновременно отправить на сервер несколько запросов, то так просто не выйдет.

да, не выйдет

но, если добавить alert в Ваш код, то получается пока страница перегружается можно 20 раз кликнуть на него и тогда удаляется все

[].forEach.call(document.querySelectorAll('.button'),function(node){
    node.dispatchEvent(new Event('click'));
    alert ('Delete');
});


может что-то можно придумать?


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