(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) =&gt; ... , true)。最后一个布尔值是在capture phase 中捕获事件,以防它产生影响(Angular 在冒泡阶段捕获事件)。 也.. 没什么:/ 【参考方案1】:

尝试keydown 事件。与keypress 事件不同,keydown 事件会针对产生字符值的键和不产生字符值的键触发。

【讨论】:

我刚刚尝试了所有三个:keyup、keydown 和 keypress - 结果相同。 for tab 和其他一些按钮被触发。但是如果键盘按钮没有改变文本,除了keypdowndeveloper.mozilla.org/en-US/docs/Web/Events/keydown 感谢您的链接。正如我所写。当我在 iPad 上运行应用程序时,我没有收到这些事件(对于非 ascii 键)。它们仅适用于我的计算机浏览器。也许有一些不同的方法来捕捉那些?我试过 angular-hot-keys 但它们不能完全工作 - 即使是 ascii 键 好吧,很酷,没有看到您所做的编辑 - 也许 jquery 可以提供帮助:) 我刚刚尝试了纯 JavaScript(更新问题)。它也不起作用,所以我认为 jQuery 不会有帮助 ;)

以上是关于(iOS) 从非 ascii 键捕获事件的主要内容,如果未能解决你的问题,请参考以下文章

Ctrl+鼠标左键点击事件捕获Qt

JavaScript事件捕获冒泡与捕获

使用 jquery 在 iframe 中捕获鼠标右键单击事件

如何在 JavaScript 中捕获右键单击事件? [复制]

如何在powershell中使用winforms右键单击选项卡时捕获事件

如何在javascript中捕获新标签事件中的打开链接?