方案: 我有一个Web应用程序,我需要在中央位置捕获页面的所有键控输入。我的第一个解决方案是不断将焦点放在文本框中,以便所有焦点都在那里。这对于桌面浏览器来说非常有效,但会导致导致移动浏览器上的软键盘始终可见的不良影响。由于我的键输入来自外部来源,因此在我提出要求之前,我不希望键盘可见。由于没有直接的方式(我已经发现)这样做,我试图不断关注一个不会导致键盘显示的控件。我无法找到一个不会导致键盘显示的控件,但会触发其中一个关键事件(keydown / keyup / keypress)。
有没有人建议如何在不显示软键盘的情况下捕捉所有键控输入?
注意:如有必要,我可以为桌面和移动设备提供不同的解决方案。
感谢任何帮助!
答案 0 :(得分:0)
好的,所以答案很简单,我简直不敢相信我花了这么长时间。
如果您只读文本框,它不会显示键盘,但仍会触发关键事件。这允许我接受来自外部源的输入而不显示键盘。我还添加了一个键盘切换按钮,它只是隐藏了只读文本框并显示了常规文本框。
如果我的应用程序不同,我可以添加并删除readonly属性并再次应用焦点以产生相同的效果。
感谢所有回复,包括已删除的回复。
答案 1 :(得分:0)
var keyedinput = "";
window.addEventListener('keydown', function(event){keyedinput += String.fromCharCode(event.keyCode)}, false);
keyedinput
将包含来自类似外部键盘的设备的键控输入内容。只需在需要时将其作为全局变量引用。如果有一个输入/ esc键或"结束" key(sequence?)你可以检查相应的keyCode
以使用变量的内容启动一个动作而不是附加到它。