Android与webview JS 键值编码差异
来源:互联网 发布:百度新闻 是算法搜索 编辑:程序博客网 时间:2024/06/01 11:25
Android针对键盘相关的按键做了自己的编码,相关的定义可以查看SDK API官方资料:
http://developer.android.com/reference/android/view/KeyEvent.html
也可以在activity中通过覆盖onKeyDown函数来获取,例如:
@Override //按键处理public boolean onKeyDown(int keyCode, KeyEvent event){int valKey = 0;// KeyEvent event1;System.out.println("Activity KEY:");System.out.println(keyCode);
System.out.println(event.getKeyCode());return super.onKeyDown(keyCode, event);}
其中,函数内部keyCode和event.getKeyCode()是一样的!
如果使用webview访问web,里面的JS获取的按键是有自己的编码的。可以在JS里把信息打印出来对比:
document.onkeydown = keyDown function keyDown(event) { var key_code = event.keyCode;alert(key_code);}
例如,针对光标方向键,webview接收到的key为,19,20,21,22。传递到JS时,打印出来38,39,40,41。这点其实不用担心,
内部自己会转换的。
针对与方向键,webview的源码内会默认先预处理。比如,如果HTML页面如果没有什么可以响应的,就会返回给activity来处理。
好像JS里的onkeydown获取不到方向的按键。除非覆盖webview的getKeyCode(),例如:
@Override //按键处理public boolean onKeyDown(int keyCode, KeyEvent event){int valKey = 0;System.out.println("Web KEY:");System.out.println(keyCode); switch(keyCode){ //UP case 50: case 19: valKey = 19; break; //DOWN case 83: case 20: valKey = 20; break; //LEFT case 81: case 21: valKey = 21; break; //RIGHT case 69: case 22: valKey = 22; break; } if (valKey!=0) { //new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT); KeyEvent event1 = new KeyEvent(KeyEvent.ACTION_DOWN, valKey); System.out.println(event1.getKeyCode()); return super.onKeyDown(38, event1); } else { return super.onKeyDown(keyCode, event); }}}
用webview开发时,可能常碰到这种问题,这里先备忘一下~~~~
- Android与webview JS 键值编码差异
- Js 与Android WebView
- Android WebView与JS交互
- android中的webView与js
- Android webView 实现与JS
- Android webview与js交互
- Android WebView与Js交互
- Android WebView与js交互
- Android webview与js交互
- Android webview 与js交互
- android webview与js交互
- Android webview与js交互
- android webview与js交互
- Android WebView与js交互
- android webView与js交互
- WebView---android webview组件如何使用 Webview与js交互
- WebView---android webview组件如何使用 Webview与js交互
- android webview js与android互动注意事项
- SQL Server存储过程的基本概念以及语法
- 网页视频播放器代码大全
- Ubuntu 原来输入中文这么简单
- 图文详解Android模拟器的使用
- 数据库结果集ResultSet详解
- Android与webview JS 键值编码差异
- Ubuntu: Linux系统下如何修改文档及文件夹权限
- Hdu-2066 一个人的旅行
- Linux常用命令
- C语言循环的小艺术
- Facebook IPO将推迟至2012年末,以便更好留住人才
- 【小程序】用策略模式完成自定义类的排序(改进版)
- 如何用普通SIM卡激活苹果 iphone 4、iPhone 3GS 和 iPhone 3G
- 分享一个常识 - 如果你也和VC 打交道