Wil*_*eed 5 html javascript bluetooth ipad ios
一些客户使用他们的iPad蓝牙键盘向我们的内部站点之一输入文本时,一直在报告问题。使用台式机或屏幕键盘上的iPad时,主要在某些输入上按Enter键可以很好地工作,但使用连接至iPad的蓝牙键盘时则不能。
经调查,onKeyUp当连接到iPad上的蓝牙键盘时,似乎输入的任何回车键代码都返回0。该演示工作正常,但是当使用屏幕键盘时,由于键码返回0而无法正常工作。我创建了这个jsFiddle进行演示。在iPad的Chrome和Safari上都进行了测试,结果与正常工作相同,onKeyPress但使用时仅返回0 onKeyUp。
$('#inputKeyUp').keyup(function (event){
$("#outputKeyUp").text("Key Up Key: " + event.which);
});
$('#inputKeyPress').keypress(function (event){
$("#outputKeyPress").text("Key Press Key: " + event.which);
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="inputKeyUp">keyup</textarea>
<div id="outputKeyUp">Key Up Key:</div>
<b/>
<textarea id="inputKeyPress">keypress</textarea>
<div id="outputKeyPress">Key Press Key:</div>Run Code Online (Sandbox Code Playgroud)
编辑:刚刚向苹果报告了该错误。我们将看看是否有任何结果。
我做了这方面的一些测试刚才,发现在keyUp事件中使用iOS上的Safari浏览器,,让在性能方面任何形式的适当的反馈的唯一密钥的蓝牙键盘时e.key,e.charCode,e.keyCode和e.which是下面的键:
所有其他键返回以下内容:
{
key: "Dead",
charCode: 0,
keyCode: 0,
which: 0
}
Run Code Online (Sandbox Code Playgroud)
这些特殊键(转义键和箭头键)仅e.key根据语法在属性上返回不同的值UIKeyInput{PascalCasedKeyName}:
UIKeyInputEscapeUIKeyInputUpArrowUIKeyInputLeftArrowUIKeyInputRightArrowUIKeyInputDownArrow在iOS上keyUp,根据我的快速研究,您可以在事件上识别的唯一键是Escape和,这四个键Arrow keys是通过在e.key属性上匹配它们的名称来实现的。这些值也会出现在keyDown事件上。
如果您仍然需要等到keyUp事件触发您的应用程序,并且需要匹配除这些特殊键以外的其他键,那么我能想到的唯一解决方案是使用keyDown事件捕获键,然后监听keyUp事件在keyDown事件内部是这样的:
el.addEventListener("keydown", e => {
if (e.which === 13) // Enter key, or which ever key code you'd like
el.addEventListener("keyup", function keyUp(e) {
el.removeEventListener("keyup", keyUp, false) // Memory clean-up
// Your code here
}, false)
}, false)
Run Code Online (Sandbox Code Playgroud)
快速搜索“ UIKeyInput”后,我发现这UIKeyInput是“ UIResponder的子类用于实现简单文本输入的一组方法”。(Apple的开发人员文档)这将解释这些键名的特殊语法。