如何监听GWT表中的键盘事件?

发布于 2024-09-04 13:10:23 字数 159 浏览 10 评论 0原文

在我的 GWT 程序中,我有一个包含选定行的表。我想用键盘上的向上和向下键移动行选择。所以我必须以某种方式捕捉关键事件。

GWT 文档仅处理输入字段中的按键事件。但我没有输入字段!

这有可能吗?也许这是 GWT 无法解决的 DOM/Javascript 限制......

In my GWT program I have a table that has a selected row. I'd like to move the row selection with the up- and down-keys on the keyboard. So I have to catch the key events somehow.

The GWT docs handle key events in input fields only. But I don't have an input field!

Is this possible at all? Maybe it is a DOM/Javascript restriction that GWT cannot work around...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光匆匆的小流年 2024-09-11 13:10:23

它通过使用 Event.addNativePreviewHandler(NativePreviewHandler handler) 来工作,

但有一些事情需要考虑:

  • 处理程序不限于小部件。它对于您的应用程序来说是全局的。如果您更改小部件,您可能必须手动注册和取消注册处理程序。
  • 浏览器与键盘事件存在差异。一些浏览器发送 keyDown 和 keyPress 事件,其他浏览器只发送 keyDown 事件。

要解决第二个问题,您可以使用以下代码获取浏览器的名称:

private static native String getUserAgent() /*-{
  return navigator.userAgent.toLowerCase();
}-*/;

It works by using Event.addNativePreviewHandler(NativePreviewHandler handler)

But there are some things to consider:

  • The handler is not restricted to a widget. It is global for your application. If you change widgets you might have to register and unregister the handler manually.
  • There are browser differences with keyboard events. Some browsers send keyDown- and keyPress-Events, others just keyDown-Events.

To work around the second issue you can get the name of the browser using this code:

private static native String getUserAgent() /*-{
  return navigator.userAgent.toLowerCase();
}-*/;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文