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

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, время: 10:50.