任何人都知道如何在Android WebView中处理键盘键的长按压。我曾假设我只需使用KeyboardEvent property (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。
有什么想法,是什么问题,或另一种方式来处理长键盘按键?
为了澄清更新,我试图绑定到长按键事件,而不是忽略它。如果键被按住一段时间,我想触发一个函数。
发布于 2021-07-19 00:44:02
您可以重写document.onkeydown函数,然后通过反抖动机制处理相应的键值。毕竟,我们需要处理的是关键价值,而不是长钥匙。守则如下:
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);https://stackoverflow.com/questions/68433396
复制相似问题