как создать 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 |
|
большое спасибо, помогло.
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, прошу помочь с той же самой проблемой.
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. Но надеюсь что это не так. Заранее спасибо за любую информацию. |
Цитата:
|
Цитата:
Я уже пытался это сделать, но, к большому сожалению, мои познания по этому направлению весьма и весьма скромные. А времени найти это на просторах "великого и могучего" совсем нет. Буду очень признателен если уточните как это сделать. Хотя бы на примере того же "Яндекса". Заранее спасибо. |
alf2006x,
что там в яндекс? поиск? это клик по кнопке document.querySelector('.suggest2-form__button').click(); и обратите внимание в вашем коде document.getElementById(""text""); кавычек многовато |
Часовой пояс GMT +3, время: 00:56. |