Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2010, 14:19
Новичок на форуме
Отправить личное сообщение для Artanis Посмотреть профиль Найти все сообщения от Artanis
 
Регистрация: 21.07.2010
Сообщений: 2

как создать event, эмулирующий enter
Добрый день
возникла проблема при создании event'а, с keyCode=13 (клавиша enter).

Мне нужно отослать input'у событие, эмулирующее клавишу enter.
Делаю я это следующим образом:

$('#element').keydown(event);


сам event пробовал создавать следующими способами:
var event = document.createEvent("KeyboardEvent");
event.initKeyEvent('keydown', true, true, null, false, false, false, false, 13, 0);


и

var event = jQuery.Event("keydown", {keyCode:13});


нужный мне элемент или не реагирует или jquery вылетает с ошибками.


Подскажите, пожалуйста, как правильно создать event для клавиши enter
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2010, 15:09
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

http://jehiah.cz/archive/firing-java...vents-properly
https://developer.mozilla.org/en/DOM/event.initKeyEvent
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2010, 16:26
Новичок на форуме
Отправить личное сообщение для Artanis Посмотреть профиль Найти все сообщения от Artanis
 
Регистрация: 21.07.2010
Сообщений: 2

большое спасибо, помогло.

function  fireEvent(element,event){
		// [url]http://jehiah.cz/archive/firing-javascript-events-properly[/url]
		// [url]https://developer.mozilla.org/en/DOM/event.initKeyEvent[/url]
		if (document.createEventObject){
			// dispatch for IE
			var evt = document.createEventObject();
			return element.fireEvent('on'+event,evt)
		}
		else{
			// dispatch for firefox + others
			var evt = document.createEvent("KeyboardEvent");
			// create a key event
			evt.initKeyEvent(
					 event,				//  in DOMString typeArg,
					  true,             //  in boolean canBubbleArg,
					  true,             //  in boolean cancelableArg,
					  null,             //  in nsIDOMAbstractView viewArg,  Specifies UIEvent.view. This value may be null.
					  false,            //  in boolean ctrlKeyArg,
					  false,            //  in boolean altKeyArg,
					  false,            //  in boolean shiftKeyArg,
					  false,            //  in boolean metaKeyArg,
					   13,              //  in unsigned long keyCodeArg,
					   0);              //  in unsigned long charCodeArg);
			return !element.dispatchEvent(evt);
		}
	}

fireEvent(document.getElementById('element'), 'keypress');


тему можно закрывать

Последний раз редактировалось Artanis, 21.07.2010 в 16:28.
Ответить с цитированием
  #4 (permalink)  
Старый 22.07.2010, 02:16
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а зачем эмулировать возникновение события?
Ответить с цитированием
  #5 (permalink)  
Старый 12.07.2019, 16:34
Новичок на форуме
Отправить личное сообщение для alf2006x Посмотреть профиль Найти все сообщения от alf2006x
 
Регистрация: 12.07.2019
Сообщений: 2

Artanis, прошу помочь с той же самой проблемой.

IE11 (требования системы, которую автоматизирую).
Нужно вызвать синтетическое событие кнопки Enter на текстовом поле.
Это последняя проблема, которую победить не могу уже неделю.

Последняя тщетная попытка такая (все работает без ошибок, возвращает Истину, но кнопка не нажимается):

Яндекс выбран для примера.

IE = Новый COMОбъект("InternetExplorer.Application");
IE.Visible = Истина;
IE.Navigate("https://yandex.ru");
// ... пауза 5 сек для гарантированной загрузки страницы
IE.document.parentWindow.focus(); // Срабатывает! Окно переводится на передний план
IE.Document.parentWindow.execScript("
|var eventObj_down = document.createEvent(""Events"");
|eventObj_down.initEvent(""keydown"", true, true);
|eventObj_down.keyCode = 13;
|eventObj_down.which = 13;
|obj = document.getElementById(""text"");
|obj.focus();
|obj.value = ""123321"";
|obj.dispatchEvent(eventObj_down);
|alert(obj.id);            // это контрольный, чтобы убедиться что работаю именно с тем полем, которое мне нужно
|");


Пытался это событие "нажимать" на тегах более высокого уровня, пытался последовательно применять keydown-keypress-keyup.

Всё тщетно. Не работает и всё тут.
Подозреваю что система может контролировать признак IsTrusted.
Но надеюсь что это не так.


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

Сообщение от alf2006x
Пытался это событие "нажимать" на тегах более высокого уровня
зачем гадать смотрите в event listeners, на каком элементе висит слушатель
Ответить с цитированием
  #7 (permalink)  
Старый 15.07.2019, 14:01
Новичок на форуме
Отправить личное сообщение для alf2006x Посмотреть профиль Найти все сообщения от alf2006x
 
Регистрация: 12.07.2019
Сообщений: 2

Сообщение от j0hnik Посмотреть сообщение
зачем гадать смотрите в event listeners, на каком элементе висит слушатель
Спасибо, большое за совет.
Я уже пытался это сделать, но, к большому сожалению, мои познания по этому направлению весьма и весьма скромные. А времени найти это на просторах "великого и могучего" совсем нет. Буду очень признателен если уточните как это сделать.
Хотя бы на примере того же "Яндекса".

Заранее спасибо.
Ответить с цитированием
  #8 (permalink)  
Старый 16.07.2019, 06:40
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

alf2006x,
что там в яндекс? поиск?
это клик по кнопке
document.querySelector('.suggest2-form__button').click();

и обратите внимание в вашем коде
document.getElementById(""text"");

кавычек многовато

Последний раз редактировалось j0hnik, 16.07.2019 в 06:43.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать таймер, как на Letitbit? free_style Javascript под браузер 1 01.07.2010 17:55
Как создать iframe, и отправлять xmlhttp запросы с него? Atilla AJAX и COMET 12 23.03.2010 17:58
как можно создать iframe со скриптами GOll Общие вопросы Javascript 2 05.05.2009 11:32
как создать елемент с вложеными елементами scuter Events/DOM/Window 11 14.05.2008 16:15