0

我想知道是否可以在 GWT 中识别设备是否能够进行触摸/手势事件

iPhone 等设备在很大程度上支持多点触控事件。同样,桌面中的 Google Chrome 也支持TouchEvents. 而目前,Windows 8已经设计了一个响应TouchEvents.

我正在开发一个应用程序,我想将某些功能限制为仅支持触摸/手势的设备!任何解决方案,请帮忙?

4

3 回答 3

1

我认为除了 UA 嗅探之外别无他法。

于 2012-12-07T06:52:28.530 回答
1

GWT 当前不提供此类实用程序。

此外,在 gwt 为我们提供直接实用程序 api 之前,在现有的 javascript 技术上编写 jsni 是有意义的,例如这些stackoverflow.com/questions/4817029/whats-the-best-way-to-detect-a-touch-screen-设备使用 javascript

对于 Windows 8,要参考的 msdn 文档是http://blogs.msdn.com/b/ie/archive/2011/09/20/touch-input-for-ie10-and-metro-style-apps.aspx

于 2012-12-07T10:12:43.543 回答
0

在 Deferred Binding 中使用 User Agent Check做到了这一点。我创建了一个白名单,以便以后可以添加更多设备。

这是代码,

<!-- Definitions for mobile -->
<define-property name="mobile.user.agent" values="android, ios, not_mobile" />
<property-provider name="mobile.user.agent"><![CDATA[
{
   var ua = window.navigator.userAgent.toLowerCase();
   if (ua.indexOf("android") != -1) { return "android"; }
   if (ua.indexOf("iphone") != -1) { return "ios"; }
   if (ua.indexOf("ipad") != -1) { return "ios"; }
     return 'not_mobile';
   }
]]></property-provider>

<!-- Constrain the value for non-webkit browsers -->
<set-property name="mobile.user.agent" value="not_mobile" >
  <none> <!-- Actually means NOR, in this case "not safari" -->
    <when-property-is name="user.agent" value="safari" />
  </none>
</set-property>

然后我使用replace-with模块文件中的属性定义了我的类。例如,我已经用 iPad 等设备的 HTML5 视频替换了 Flash 播放器。

<replace-with class="com.example.HTML5Player">
        <when-type-is class="com.example.FlashPlayer" />
        <any>
           <when-property-is name="mobile.user.agent" value="android" />
           <when-property-is name="mobile.user.agent" value="ios" />
        </any>
</replace-with>
于 2012-12-18T12:14:39.440 回答