Tim*_*ers 18 javascript bluetooth keydown ipad ios
背景: 我有一个textarea.我在用户输入时捕获Tab键事件,并插入Tab字符(\ t)并阻止浏览器关注下一个输入.在所有浏览器上,这在Mac和PC上都没有问题.
问题: 使用连接到iPad的蓝牙键盘时,这不起作用.该文档注册tab键事件,但只要我专注于textarea,所有Tab键事件都将被忽略,而不会发送到浏览器.我也测试过文本输入,并看到相同的结果.
示例: https ://plnkr.co/edit/NQvxijj3ISZ0B48fSHvi?p = preview
简单的听众:
$(function(){
$("body").bind("keydown",function(e){
$("#bodyLog").append($("<div/>").html(e.keyCode));
return e.preventDefault();
});
});
Run Code Online (Sandbox Code Playgroud)
当您选择了主体(而不是TEXTAREA)时,会注册Tab键事件并显示数字9.还会出现任何其他关键事件.
当您选择textarea时,所有keydown事件都在body侦听器和textarea侦听器上注册...除了tab键之外.
如果有人有解决方案,我将永远感激不尽.
编辑 我已经通过观察5个空格"修复"了这个问题,然后将其转换为制表符.
我研究了这个,并且只能说明iOS在关注输入/ textareas时不想释放对TAB键的控制.我曾尝试访问Google Docs这样的网站,看看他们是否已经解决了这个问题,但是他们强迫您下载应用程序而不是允许您在iOS上编辑Safari内部的文件.我猜这是因为iOS想要完全控制Tab键.我在iOS上尝试过Chrome,但功能相同,所以我想说这不是Safari问题,而是iOS问题.
一种可能但未经测试的解决方法是将整个代码编码<div>为textarea,然后将div替换为textarea.由于tab键适用于所有其他元素,理论上它应该可行,但它需要相当多的Javascript和CSS才能使元素像另一个元素一样.
编辑2
我发现使用Option + Tab可以在textarea中捕获tab键.我觉得这并不令人满意.当我在普通键盘上键入段落时,我不输入Option + Tab,我只需键入Tab.据我所知,没有办法在textarea中单独捕获Tab键.
| 归档时间: |
|
| 查看次数: |
716 次 |
| 最近记录: |