2017-02-02 38 views
-2

Я не ищу, как инициировать событие, я ищу способ, как имитировать действие нажатия клавиши.Как имитировать действие нажатия клавиш в javascript/jquery?

Ищу ACTION не EVENT ...

Этот код не работает для меня:

element.trigger('focus').trigger({ type : 'keydown', which : 50 }) 

Потому что, когда пользователь вводит что-то на вход гораздо больше вещей СЛУЧИЛОСЬ, например, события (нажатие клавиши, KeyUp, KeyDown), символ вводится на вход, некоторые DOM события инициируются и т.д.

С помощью этого кода:

element.trigger({ type : 'keydown', which : 50 }) 

вход остается пустым. Я знаю, что могу использовать:

element.trigger({ type : 'keydown', which : 50 }).val(2); 

но я ищу более полное решение, смоделируйте действие, если это возможно.

Любое предложение?

+0

Мой вопрос: _why_. Почему вам нужно точно имитировать активность пользователя? – hindmost

+0

@ hindmost Почему причина важна? Я хочу знать, как это сделать в javascript, поэтому stackoverflow существует, чтобы задавать вопросы .... – fico7489

+0

@hindmost некоторые плагины могут регистрировать множество событий на входе, и я хочу имитировать действие нажатия клавиш. Я хочу, чтобы плагин делал то, что нужно делать, когда пользователь нажимает клавишу ... – fico7489

ответ

0

jQuery предлагает встроенное решение для этого.

.keypress

$("#target").keypress(); 
$("#target").keypress(function() { 
    console.log("Handler for .keypress() called."); 
}); 

.keyup

$('#target').keyup(); 
$('#target').keyup(function() { 
    console.log("Handler for .keyup() called."); 
}); 

.keydown

$('#target').keydown(); 
$('#target').keydown(function() { 
    console.log("Handler for .keydown() called."); 
}); 

Edit:

Так вы пытаетесь список слушателей событий? См Get event listeners attached to node using addEventListener

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

+0

, но когда пользователь выполняет действие нажатия клавиш, больше событий запускаются, как я писал (keypress, keyup, keydown) и т. д .... – fico7489

+0

@ fico7489 см. Мое редактирование – zurfyx

+0

Вы не читали мой вопрос, + некоторые события DOM запускаются, + символ вводится во вход, + как я могу быть уверен, какие действия и события срабатывают, когда пользователь преформирует действие нажатия клавиши? когда пользователь выполняет нажатие клавиши ACTION более 10 событий, а не только нажатия клавиш, нажатия клавиш и событий смены клавиш .... – fico7489

0

Я думаю, вы хотели бы имитировать событие конкретного события keyPress.

В таком случае вы можете использовать JQuery jQuery.Event Constructor

Я надеюсь, что вы пытаетесь имитировать номер 2 ключа. В таком случае вы можете сделать так:

var e = jQuery.Event("keypress"); 
e.which = 50; 

$("#some_element").trigger(e); 

Редактировать: Я просто пытаюсь помочь. Если вы хотите сгенерировать действие после этого события, вы можете попробовать ниже.

Зарегистрировать действие/событие

$("#some_element").keyPress(function(e){ 
    // the action to perform when keyPress event raised. 
}); 
+0

Вы определенно не читали вопросов и комментариев .... – fico7489

0

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

утра ищет действие не EVENT ...

Вы не можете управлять компьютером пользователей, ближе всего к этому зовет событие. Так что да, вы, , можете искать событие.

Потому что, когда пользователь вводит что-то во вход, происходит гораздо больше событий, например. события (нажатие клавиши, KeyUp, KeyDown), символ вводится на вход, некоторые DOM события инициируются и т.д.

В события могут быть смоделированы, добавляющим символы могут быть смоделированы, DOM события могут быть смоделированы. Тем не менее, пользователь или пользовательское устройство не может быть смоделировано.

Вам, вероятно, понадобится написать некоторые абстракции. Узнайте, что в настоящее время сосредоточено, проанализируйте материал, который может быть применим к этому, и имитируйте поведение. Возможно, его также можно совершить перехват низкого уровня addEventListener, чтобы проксировать их через свой собственный код.

Что я предлагаю, это выяснить, является ли это вашей проблемой и убедиться, что у вас нет проблемы с XY. Например, почему вы хотите имитировать пользователя, почему вы не отделяете «проводку» от «логика».

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

+0

нормально, удовлетворительный ответ в том, что то, что я ищу, невозможно ... – fico7489

 Смежные вопросы

  • Нет связанных вопросов^_^