JxBrowser 转义键未发送

问题描述

当我从 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 不是模拟键盘输入的正确方式。请尝试分派 KeyPressedKeyTypedKeyReleased,如 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);
}