javascript - Android WebVIew中的键盘长键按下
问题描述
任何人都知道如何在 Android WebView 中处理长按键盘键。我以为我可以简单地使用KeyboardEvent 重复属性(https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat)但是当我使用以下代码对其进行测试时,尽管按住键,但返回的重复属性始终为假。
document.addEventListener('keydown', logKey);
function logKey(event) {
console.log(event.repeat);
}
上面的代码在桌面浏览器上按预期工作,返回一次 false,然后重复返回 true,同时按住一个键。但是在 Android WebView 中,它反复返回 false。
任何想法是什么问题,或者处理长键盘按键的替代方法?
更新 为了澄清,我试图绑定到长按键事件而不是忽略它。如果按住某个键一段时间,我想触发一个功能。
解决方案
你可以重写document.onkeydown函数,然后通过防抖动机制处理对应的key值。毕竟我们需要处理的是键值,而不是长键。代码如下:
var throttle = function(func, delay) {
var prev = Date.now();
return function() {
var context = this;
var args = arguments;
var now = Date.now();
if (now - prev >= delay) {
func.apply(context, args);
prev = Date.now();
}
}
}
function onkeypress(evt) {
var keycode = evt.which ? evt.which : evt.keyCode;
console.log(keycode);
}
document.onkeypress = throttle(onkeypress, 500);
推荐阅读
- reactjs - React - 上下文提供程序中的多个不相关值
- python - 端口扫描结果导出为 CSV
- reactjs - 在 React Native 中从 firebase 获取数据
- html - 如何使用 html 和 css 在图片上添加黑色叠加层
- html - 在 HTML 中使用 SVG 创建一个等边三角形,底边和高度为 100px
- ios - 有人可以帮我删除此错误:使用未声明的类型“bool”
- python - 用 Pandas 求和 TimeField 小时/分钟
- actionscript-3 - 如何在应用程序中共享图像 as3
- highcharts - Highcharts - 如何防止两个线点在两个条形图之间分裂
- mysql - Docker-Compose 服务不通信