【发布时间】:2018-01-08 02:00:39
【问题描述】:
下面的代码应该简单地抑制任何按键并将按下的键添加到 div 中。这在桌面上运行良好,但在移动设备(safari 和 chrome)上event.key 未定义。
<html>
<head></head>
<body>
<input />
<div id="#test"></div>
<script>
var str = '';
var el = document.getElementById('#test');
document.addEventListener('keypress', function(event) {
str += event.key;
event.preventDefault();
el.innerHTML = str;
})
</script>
</body>
</html>
event.keyCode 和 event.keyIdentifier 都可用,但将它们转换为字符串会在不同的键盘布局和语言(尤其是特殊字符)上给我带来不想要的结果。
有没有办法直接获取key的值?
这是一个 codepen 示例以防万一:https://codepen.io/anon/pen/pryYyQ
【问题讨论】:
-
您使用的是哪种设备和键盘?
-
在 iPhone 6 Safari 和 Chrome、Nexus 6 Chrome、One Plus 3 和 3T Chrome 以及霍尼韦尔 Android 扫描仪以及 Chrome 上使用集成扫描仪作为输入和每个操作系统的本机数字键盘进行了测试。不适用于任何设备。
-
您可以从有效的 html 开始。解析器对
<div id="#test" />做了什么? Safari 至少将它视为一个没有结束标签的 DIV 打开标签,因此可以更正错误以将其后的所有内容放入 div 中。 -
这只是一个演示,用于测试更大应用程序的错误。我已经将标记更改为有效,但就像我说的那样,错误不是选择器未定义而是事件的键属性,它绑定到文档。
标签: javascript mobile-safari keylistener mobile-chrome