Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.07.2018, 00:10
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от flyte Посмотреть сообщение
нажимает только на первый button и страница перезагружается
А если ручками нажимать не перезагружается?
Ответить с цитированием
  #12 (permalink)  
Старый 06.07.2018, 09:19
Аспирант
Отправить личное сообщение для flyte Посмотреть профиль Найти все сообщения от flyte
 
Регистрация: 23.09.2014
Сообщений: 72

Сообщение от j0hnik Посмотреть сообщение
А если ручками нажимать не перезагружается?
перегружается
в том то и дело, у меня есть 20 картинок и соответственно 20 input type="submit" для удаления их, на сайте я ничего менять не могу, делаю надстройку в greasmonkey чтобы одним кликом удалять все сразу, а не по одной, или это не реально реализовать?
Ответить с цитированием
  #13 (permalink)  
Старый 06.07.2018, 09:53
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

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>
Ответить с цитированием
  #14 (permalink)  
Старый 06.07.2018, 12:56
Аспирант
Отправить личное сообщение для flyte Посмотреть профиль Найти все сообщения от flyte
 
Регистрация: 23.09.2014
Сообщений: 72

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

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

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


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

Последний раз редактировалось flyte, 06.07.2018 в 12:59.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитация клика по ссылке Midel jQuery 4 05.05.2014 22:34
обработка клика мыши при анимации stalker77 jQuery 5 30.10.2011 22:15
Имитация клика в заданной точке StrSprut jQuery 1 10.10.2011 11:11
Получение координат клика мыши uonax Events/DOM/Window 3 20.06.2010 09:32
Имитация нажатия кнопки мыши Mantell Общие вопросы Javascript 3 19.02.2009 17:03