当前位置: 首页 > 知识库问答 >
问题:

GXT FileUploadField的按键事件

邹嘉致
2023-03-14

仅限GXT 3. x。

我越来越清楚,Sencha故意设计了FileUploadField,以避免所有按键事件被检测到。

我试图拦截onBrowserEvent(事件),但无法检测到我在专注于FileUploadField组件时通过按键生成的任何按键事件。

按键事件分流器在哪里?

我找不到任何按键处理程序插入方法。

我希望通过按空格键或回车键来触发文件上传。

除了从头开始重写一个全新的组件,有人能告诉我我可以做些什么来实现键盘激活文件上传的目标吗?

共有1个答案

白祺然
2023-03-14

除非您接收事件,否则onBrowserEvent将不会接收任何事件-您确定要调用sinkEvents吗?如何添加处理程序?如果您使用addDomHandler,它将为您接收它们,但是假设它们不是dom事件,或者您已经调用了sinkEvents。在不引发事件的情况下,浏览器不知道如何将该事件传递给GWT小部件。如果所有事件都是自动下沉的,那么每次你在页面上移动鼠标时,你都会看到一场事件Storm,因为你通过的每个小部件以及它的所有父部件都会触发mousemove。

如果重写onBrowserEvent,那么您正在构建描述如何处理来自浏览器的实际事件的方法,这就是。谷歌。gwt。使用者客户DOMclass连接到小部件中,为其提供事件。除非将该方法作为最终方法,否则,只要浏览器正在生成这些事件并将其传递给事件侦听器,就无法阻止小部件用户获取这些事件。

即使onBrowserEvent已被覆盖并最终确定,您仍然可以通过创建NativePreviewHandler并检查事件发生的位置来访问许多事件。这甚至可以在事件进入小部件本身之前让您进入事件-在那里您可以调用NativePreviewEvent.cancel()来防止它在小部件本身上发生,或者您可以在处理程序的早期处理它。

 类似资料:
  • 嗨,在用pygame开发游戏时,有一个问题其实并不重要,但它一直困扰着我一段时间。 所以上面是一个工作代码,我相信 同样有效。 然而,当我只是尝试类似“event.key==pyplay。K_RIGHT:",python给我一个错误,说没有属性'key'。虽然我知道选择以上2个代码会更合理,而不仅仅是“event.key==pyplay。K_RIGHT:",我不知道为什么pyplay会说事件没有属

  • 我正在使用Microsoft Visual C#2010 Express编写一个窗口窗体应用程序。我在写一个数独程序。我以前写过一次这个程序,并让它工作。由于硬盘故障,我丢失了源代码。我在表格上画了一个网格。我让鼠标事件工作了。我有重要的新闻活动要办。然后我在表单中添加了几个按钮,并让它们工作。但随后出现了一个问题。在我添加按钮并使其工作后,按键事件停止工作。为什么按钮事件和按键事件之间会发生冲突

  • 可能的重复: 跨浏览器方式,以便在按住键时自动获取重复的按键事件 我正在尝试用JavaScript/CSS/超文本标记语言创建一个简单的游戏,我正在使用jQuery(和一点下划线)来处理按键。玩家使用箭头键控制一个块。我在同时处理多个按键时遇到了问题。我有一个系统,其中闭包跟踪所有按下的箭头键。如果玩家按以下顺序按键,这个效果很好: 玩家按下(块向下移动) 玩家按下左(块对角线向下移动-左) 玩家

  • 本文向大家介绍Atitit.js的键盘按键事件捆绑and事件调度,包括了Atitit.js的键盘按键事件捆绑and事件调度的使用技巧和注意事项,需要的朋友参考一下  1. Best的方法还是 2. Event bind 3. Event dispatch js中获取键盘事件 只要你定义了这些键的动作,你在浏览器里按下这些键就会响应,兼容目前所有浏览器。 js 里面的键盘事件经常用到,所以收集了键盘

  • 问题内容: 我想知道redis中是否有一个功能可以让我获取所有过期的密钥(我的意思是某种事件,这使我有机会取回所有过期的记录)。其目的是将旧值保存到另一个数据库中。我听说有可能使用发布机制,但是google不能帮助我们实现这一想法。 问题答案: Redis的当前开发版本包含一个新功能:键空间通知。文档:http : //redis.io/topics/notifications 密钥空间通知允许客

  • > 我有一个代码,当用户在