(iOS) 从非 ascii 键捕获事件
Posted
技术标签:
【中文标题】(iOS) 从非 ascii 键捕获事件【英文标题】:(iOS) Capture event from non-ascii keys 【发布时间】:2018-03-15 18:36:06 【问题描述】:我正在尝试订阅我用 Ionic Framework 编写的应用程序中的物理键盘事件(非 ASCII 键)(当我尝试访问由 ionic serve
启动的页面,在我的 ios 上部署应用程序时会出现问题设备或从 xcode 在 ios 模拟器中运行它)。
<div tabindex="1" (keyup)="onKey($event)" (keydown)="onKey($event)" (keypress)="onKey($event)"></div>
在onKey
函数中,我只是在屏幕上打印有关按下哪个键的信息:
onKeyDown(event: any): void
console.log(JSON.stringify(event.key));
此功能按预期工作,直到我按下一个非 ascii 键:
命令, 控制, 选项, arrow_up, arrow_down, arrow_left, arrow_right, 大写锁定, 班次他们只是没有记录。我没有收到任何错误消息,什么都没有。在常规浏览器中运行ionic serve
时,一切正常。
应该提到什么。这些键可以正常工作(即我可以使用箭头键在 textarea 中导航)。
我也尝试过纯 javascript:
document.onkeydown = function(evt)
evt = evt || window.event;
alert(evt.keyCode);
;
同样的结果 - 使用桌面上的箭头键,不适用于 iPad。
作为另一个尝试,我使用了angular hotkeys,但是这个库在 ios 设备上不起作用。
【问题讨论】:
捕捉按键没有问题。我在捕获非 ascii 键时遇到问题。 其他你可以尝试的东西,使用纯 Javascript:myTextArea.addEventListener("keydown", (event) => ... , true)
。最后一个布尔值是在capture phase 中捕获事件,以防它产生影响(Angular 在冒泡阶段捕获事件)。
也.. 没什么:/
【参考方案1】:
尝试keydown
事件。与keypress
事件不同,keydown 事件会针对产生字符值的键和不产生字符值的键触发。
【讨论】:
我刚刚尝试了所有三个:keyup、keydown 和 keypress - 结果相同。 fortab
和其他一些按钮被触发。但是如果键盘按钮没有改变文本,除了keypdown
developer.mozilla.org/en-US/docs/Web/Events/keydown
感谢您的链接。正如我所写。当我在 iPad 上运行应用程序时,我没有收到这些事件(对于非 ascii 键)。它们仅适用于我的计算机浏览器。也许有一些不同的方法来捕捉那些?我试过 angular-hot-keys 但它们不能完全工作 - 即使是 ascii 键
好吧,很酷,没有看到您所做的编辑 - 也许 jquery 可以提供帮助:)
我刚刚尝试了纯 JavaScript(更新问题)。它也不起作用,所以我认为 jQuery 不会有帮助 ;)以上是关于(iOS) 从非 ascii 键捕获事件的主要内容,如果未能解决你的问题,请参考以下文章
使用 jquery 在 iframe 中捕获鼠标右键单击事件
如何在 JavaScript 中捕获右键单击事件? [复制]