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

2018-05-03 22:11:49 +08:00
 gam2046

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

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

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

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

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

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

9687 次点击
所在节点    Android
4 条回复
codehz
2018-05-04 16:10:53 +08:00
放弃(为啥不考虑改网页用另一种方式通讯
-1 -2 这种事件本来就不应该存在
felixlong
2018-05-04 16:22:35 +08:00
webView.loadUrl("javascript:document.onkeydown(xxx);");
gam2046
2018-05-05 14:33:07 +08:00
@codehz 道理是这么个道理,但是....天知道三大运营商的历史设备上为什么会有这种奇奇怪怪的设计,导致现在要做向下兼容。我也很绝望啊。


@felixlong 这是最坏的方法了,因为我还要获得当前的对象是在 document 还是 input 还是其他的
codehz
2018-05-05 14:45:10 +08:00
@gam2046 #3 注入 JS 干掉这样的监听器,然后用现代的方法去模拟

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/451894

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX