问题描述
当我从 Java 向 Jxbrowser 发送转义键时,没有收到它。但是我可以成功发送数字键、回车键、字母键等。下面两个简单的测试用例说明了我的问题(阅读误区)。
KeyTyped keyTyped = KeyTyped.newBuilder().setKeyCodeValue(13).build();
browser.dispatch(keyTyped); // JavaScript handler receives enter keystroke
KeyTyped keyTyped = KeyTyped.newBuilder().setKeyCodeValue(27).build();
browser.dispatch(keyTyped); // JavaScript handler DOES NOT receive escape keystroke
// JS handler
$(document).on('keypress.lineItemSelected',this.handleKeyboardPress.bind(this));
解决方法
ESC
不是文本符号。仅发送 KeyTypes
不是模拟键盘输入的正确方式。请尝试分派 KeyPressed
、KeyTyped
和 KeyReleased
,如 https://jxbrowser-support.teamdev.com/docs/guides/browser.html#dispatch-keyboard-events
private static void dispatchKeyEvent(Browser browser,char character,KeyCode keyCode) {
KeyPressed keyPressed = KeyPressed.newBuilder(keyCode)
.keyChar(character)
.build();
KeyTyped keyTyped = KeyTyped.newBuilder(keyCode)
.keyChar(character)
.build();
KeyReleased keyReleased = KeyReleased.newBuilder(keyCode)
.build();
browser.dispatch(keyPressed);
browser.dispatch(keyTyped);
browser.dispatch(keyReleased);
}