gpt4 book ai didi

javascript - Android 下的 Firefox/Chrome 在键入字母时不会触发 OnKeyPress、onKeyDown、onKeyUp 事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:31 26 4
gpt4 key购买 nike

我在 Android 下使用 Firefox/Chrome 时遇到问题。

当我在输入框中键入文本时(参见下面的代码),在键入字母时不会触发 onkeypress、onkeyup 和 onkeydown 事件,但在键入“%”符号或按下空格键时会触发。

在 Android“预装”浏览器中一切正常。

另一个非常罕见的事情,如果我的光标不是最后一个字符,行为是不同的...如果我的光标在文本的中间,在 Firefox 下,所有事件都会为任何键触发。在 Chrome 事件中,按下一个键会触发两次 onkeyup 和 onkeydown,但不会触发 onkeypress。

我在不同的设备上测试过它,有类似的问题。

我找不到在 Internet 上报告的任何类似问题。以前有人遇到过这个问题吗?你是怎么解决的?

像 Amazon.com 这样的网站可以很好地自动完成,所以必须有一个解决方法......

请注意该问题已在最新版本的 Firefox 和 Chrome 中消失

非常感谢您的帮助。

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>onKeyXxx event test</h1>
<input type="text" onkeydown="alert('DOWN');" onkeypress="alert('Press');" onkeyup="alert('UP');">
<hr/>
</body>
</html>

最佳答案

setInterval 成功了。

还不确定我将如何在 Script.aculo.us(我用于自动选择下拉列表的库)中实现它,但我会找到一种方法。

这是实现 setTimer 的解决方案示例 :)

<!DOCTYPE html>
<html>
<head>
<script>
typedText="";
function checkTextChange(){
if (document.getElementById("test").value != typedText){
typedText=document.getElementById("test").value;
document.getElementById("output").innerHTML=typedText;
return true;
} else {
return false;
}
}
if (navigator.appVersion.indexOf("Android")>-1 && (navigator.appVersion.indexOf("Safari")==-1 || navigator.appVersion.indexOf("Chrome")>-1)){
alert("Using work around");
var myVar = setInterval(function(){checkTextChange();},200);
}
</script>
</head>
<body >
<h1>onKeyXxx event test</h1>
<form>
<input type="text" name="test" id="test" onkeydown="checkTextChange();" onkeypress="checkTextChange();" onkeyup="checkTextChange();">
</form>
<div id="output"></div>
<hr>
</body>
</html>

关于javascript - Android 下的 Firefox/Chrome 在键入字母时不会触发 OnKeyPress、onKeyDown、onKeyUp 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21388064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com