Приложение JavaFX отображает веб-страницу, используя веб-представление.
Мне нужно перехватывать всякий раз, когда пользователь фокусирует текстовое поле ввода (<input>
), чтобы позволить ему вводить значение с клавиатуры (обычное поведение) или с помощью приложения Android.
Для этой второй части я WebEngine.executeScript()
обратный вызов jQuery, используя WebEngine.executeScript()
и этот Javascript:
jQuery(document).on('focus', 'input[type=text]', myCallback);
myCallback
- это функция, которая вызывает событие внутри моего приложения Java. Когда пользователь закончит редактирование (например, нажав OK в приложении Android, нажав Enter на клавиатуре...), мне нужно сфокусировать поле ввода. Итак, что я пробовал:
$(":input").blur();
$("a").focus()
webView.getParent().requestFocus()
.Последнее - моя лучшая попытка: поле ввода не сфокусировано. К сожалению, он снова фокусируется, как только пользователь нажимает на веб-страницу.
Мне плохо, мне нужно сделать Javascript-вызовы (используя executeScript()
) в потоке Java FX (Platform.invokeLater()
).
На самом деле все решения, поставленные в этом вопросе, работают.
возможно, это помогает...
$('input').each(function(){
$(this).trigger('blur');
//each input event one by one... will be blured
})