这真的很烦人 - 当在iPad上使用带有蓝牙键盘的Safari或Chrome网络浏览器时,快速点击Tab键会冻结然后崩溃并重启浏览器(例如,如果你是快速打字员并使用登录任何网站的形式,输入用户ID并快速点击选项卡输入密码。)
注意到iOS 9.3.1,iPad air和iPad mini。
当快速连续输入标签和其他字符时,会注意到蓝牙键盘,并且在使用蓝牙条形码扫描仪(包含标签字符的扫描条形码)时也会注意到这一点。
我正在尝试拦截keydown事件以检测选项卡,但是当发生此崩溃时它不会触发。有人可以建议吗?
var throttleTabKeyMs = 250; // if hits tab key must wait 250ms before next key allowed
var inputLocked = false;
window.addEventListener('keydown', function(e) {
console.log(e.which);
if (inputLocked) {
e.preventDefault();
return false;
} else if (e.which === 9) {
inputLocked = true;
setTimeout(function() {
inputLocked = false;
}, throttleTabKeyMs);
}
});

<input type='text' placeholder='type fast' />
<input type='text' placeholder='with bluetooth' />
<input type='text' placeholder='keyboard or scanner' />
<input type='text' placeholder='attached to' />
<input type='text' placeholder='your pretty ipad' />
&#13;
我正在尝试修复它,以便客户至少可以使用他们漂亮的iPad来完成工作。此实验对输入进行了限制,以便在按下TAB
键时,keydown
事件将被解除,直到250ms
通过(选择一个比我通常更高的值来帮助说明SO)。但问题是,这个代码在点击蓝牙/标签错误时似乎无法触发..必须发生在较低级别?
有人可以推荐一种解决方法或一个不同的事件,我可以用来排队输入并防止用户进入/扫描TAB
时发生崩溃吗?谢谢!
测试: google.com和众多其他网站上的确认错误,所以我知道这不是我的网络应用程序上下文。其他用户可以重复使用iPad 2和iPad mini。