如何禁用 GXT 4 中的触摸支持?

How to disable Touch support in GXT 4?

我正在构建,我在 "gxt.user.agent" 中添加了 "edge",它启用了许多不必要的手势内容。我怎样才能禁用它? 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

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

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

PointerEventsSupport.impl.isSupported();

您甚至不需要使用 return 值,但只需检查它就足以确保一切都足够早地连接起来。这在他们的任何 docs about getting started with touch 中都没有提到,所以我不得不假设这通常会自动正确连接,并且您的应用程序有一些独特之处可以防止这种情况发生。