首页 > 解决方案 > 如何在 GXT 4 中禁用触控支持?

问题描述

我正在构建,我在其中添加"edge""gxt.user.agent"许多不必要的手势内容。我怎样才能禁用它?gxt.device设定为"desktop"

启动错误:

java.lang.IllegalStateException: Event system already initialized at Unknown.java_lang_Throwable_Throwable__Ljava_lang_String_2V(bootstrap-0.js@8:1740) at Unknown.java_lang_Exception_Exception__Ljava_lang_String_2V(bootstrap-0.js@55:5413) at Unknown.java_lang_RuntimeException_RuntimeException__Ljava_lang_String_2V(bootstrap-0.js@55:5423) at Unknown.new java_lang_IllegalStateException_IllegalStateException__Ljava_lang_String_2V(bootstrap-0.js@69:20816) at Unknown.com_google_gwt_user_client_impl_DOMImplStandard_ensureInit__V(bootstrap-0.js@87:11298) at Unknown.com_sencha_gxt_core_client_gestures_impl_PointerEventsSupportImpl_$clinit__V(bootstrap-0.js@5:15166) at Unknown.com_sencha_gxt_core_client_gestures_PointerEventsSupport_$clinit__V(bootstrap-0.js@3:14668) at Unknown.com_sencha_gxt_cell_core_client_AbstractEventCell_$addCellGestureAdapter__Lcom_sencha_gxt_cell_core_client_AbstractEventCell_2Lcom_sencha_gxt_core_client_gestures_CellGestureAdapter_2V(bootstrap-0.js@5:4934) at

标签: extjsgwtgxt

解决方案


addCellGestureAdapter (问题中的堆栈顶部 - 由于堆栈太短,不清楚是什么在调用它)被调用得太晚了。该DomImplStandard.ensureInit()方法被设计为在任何元素附加侦听器之前非常早地调用,以便正确的处理程序可以为附加的任何元素做好准备。

GXT 4 资源不公开,支持也很薄弱(Sencha 发表了一篇博文,讨论应该如何使用 StackOverflow 而不是他们自己的论坛,但他们实际上似乎并没有检查 StackOverflow),但我认为有一种方法您可以在页面生命周期的早期调用以实现此目的。尝试将此行添加为 onModuleLoad 中的第一行之一,以确保在附加第一个元素之前将其连接起来:

PointerEventsSupport.impl.isSupported();

您甚至不需要使用返回值,但只需检查它就足以确保一切都足够早地连接起来。这在他们的任何文档中都没有提到touch 入门,所以我必须假设这通常会自动正确连接,并且您的应用程序有一些独特的东西可以防止这种情况发生。


推荐阅读