ntdll
V2EX  ›  Android

应用内嵌 Webview,如何向网页发送任何 keyCode 的按键事件?

  •  
  •   ntdll · May 3, 2018 · 13646 views
    This topic created in 2935 days ago, the information mentioned may be changed or developed.

    说来是比较奇怪的需求,目前需要向 Webview 内运行的网页发送一些奇奇怪怪的 keyCode 的按键事件。

    比如我希望让document.onkeydown接收到一个keyCode = -1/-2/-3的事件应该如何做呢?

    直接调用Webview.dispatchKeyEvent(...)对于一些奇奇怪怪的 keyCode,即KeyEvent常量中没有定义的值 会被 android 自动转换成KeyEvent.KEY_UNKOWN

    即网页收到的keyCode为 0,并不是我派发出去的值。

    那么我在 Android 中,如何优雅的向 Webview 内的网页发送一个我指定 keyCode 的按键事件呢?

    (包含完整的onkeydown/onkeypress/onkeyup事件)

    4 replies    2018-05-05 14:45:10 +08:00
    codehz
        1
    codehz  
       May 4, 2018
    放弃(为啥不考虑改网页用另一种方式通讯
    -1 -2 这种事件本来就不应该存在
    felixlong
        2
    felixlong  
       May 4, 2018
    webView.loadUrl("javascript:document.onkeydown(xxx);");
    ntdll
        3
    ntdll  
    OP
       May 5, 2018
    @codehz 道理是这么个道理,但是....天知道三大运营商的历史设备上为什么会有这种奇奇怪怪的设计,导致现在要做向下兼容。我也很绝望啊。


    @felixlong 这是最坏的方法了,因为我还要获得当前的对象是在 document 还是 input 还是其他的
    codehz
        4
    codehz  
       May 5, 2018
    @gam2046 #3 注入 JS 干掉这样的监听器,然后用现代的方法去模拟
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2403 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 16:11 · PVG 00:11 · LAX 09:11 · JFK 12:11
    ♥ Do have faith in what you're doing.