Javascript-iPad Tab键检测,带蓝牙键盘

Javascript - iPad Tab Key Detection w/ Bluetooth Keyboard

本文关键字:键盘 Tab 检测 Javascript-iPad      更新时间:2023-09-26

我有一个文本字段,用户可以在其中键入数据。他们可以使用tab键,然后字段就会缩进。这适用于除带蓝牙键盘的ios之外的所有设备。

如果我访问http://www.rapidtables.com/tools/notepad.htm,我可以在我的台式机/笔记本电脑上打标签。但在我的iPad上。。。没有骰子。

如果我访问https://api.jquery.com/keydown/,https://api.jquery.com/keyup/,https://api.jquery.com/keypress/。。。他们中没有人检测到iPad上的tab键。

tab键适用于Notes等ios原生应用程序,并且tab键可以在网页内的字段之间导航。有没有一种方法可以检测任何人都知道的Javascript中的tab键?

编辑

这是我拼凑的一把小提琴,这样你就可以看到代码和问题的作用:https://jsfiddle.net/9jv0bmbx/1/基本上,我只是在检查适用于台式机/笔记本电脑的e.keyCode===9。在iPad上,它会注册除制表键之外的所有键

EDIT2:

这是另一个解决方案。我发现了一篇关于如何捕捉所有事件的文章。下面是一篇jsfiddle,这是我发现这个概念的文章。请注意,在jsfiddle中,我返回了原始的addEventListener,因为您需要的是在添加一个空白侦听器之后完成的。

jsfiddle

var oldAddEventListener = EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener = function(eventName, eventHandler)
{
  oldAddEventListener.call(this, eventName, function(event) {
      if(event.target.id === "textarea" && event.keyCode===9){
        event.preventDefault();
        $(this).val($(this).val()+"'t");
        $("#log").append("<li>Tab Pressed</li>");
      }
    eventHandler(event);
  });
};
$("#textarea").keydown(function(e) {
});
EventTarget.prototype.addEventListener = oldAddEventListener;

编辑:

这里的测试键盘捕获tab键向下。看看这个库,它应该能解决你的问题。要么直接使用该库,要么通过挖掘代码来了解它是如何在iOS上捕获选项卡的。http://dmauro.github.io/Keypress/

有某种硬件/功能键问题阻碍了正常的制表键按下。按OPTION+Tab将像正常情况一样触发处理程序。也许是某种设置导致了这种情况,但很明显,你不能指望你的用户更改他们的设置来使用你的应用程序。你也许可以找到某种方式来利用它,但这似乎是默认的行为,你被它卡住了

可以检测iOS设备,并为选项卡的默认行为找出某种替代。或者,您可以捕捉focusOut或模糊事件,并检测它是否不是由鼠标引起的。