根据外形尺寸更改入口点类别

2024-05-13

如果用户从移动 Web 浏览器或桌面 Web 浏览器访问,我希望在我的 GWT 应用程序中加载不同的用户界面。我想知道如何编辑我的 Application.gwt.xml 文件,更改根据外形规格加载哪个入口点类。我认为这可能是这样的,但我只是在黑客,所以我想知道是否有人有任何想法?

<entry-point class="webapp.client.WebAppEntryPoint">
<when-property-is name="formfactor" value="desktop"/>
</entry-point>

<entry-point class="webapp.client.MobileAppEntryPoint">
<when-property-is name="formfactor" value="mobile"/>
</entry-point> 

Cheers.


它几乎和你描述的一样简单——也就是说,一旦你弄清楚了formfactor属性以及如何为其选择一个值。

事实证明,当您创建入口点并在模块中声明它时,编译器会使用GWT.create实际做一个例子。这使得它受到模块中声明的重新绑定规则的约束。所以如果两者WebAppEntryPoint and MobileAppEntryPoint从一些常见的超类继承,您可以在模块中声明该入口点,并在您为触发它们被选择而制定的规则上略有不同:

<entry-point class="webapp.client.AbstractAppEntryPoint" />
<replace-with class="webapp.client.WebAppEntryPoint">
  <when-type-is class="webapp.client.AbstractAppEntryPoint" />
  <when-property-is name="formfactor" value="desktop"/>
</entry-point>

<replace-with class="webapp.client.MobileAppEntryPoint">
  <when-type-is class="webapp.client.AbstractAppEntryPoint" />
  <when-property-is name="formfactor" value="mobile"/>
</entry-point> 

这些规则规定:“当 GWT 尝试启动应用程序时,使用AbstractEntryPoint(它实现了EntryPoint)这样做。当有人调用GWT.create(AbstractEntryPoint) and formfactor is desktop,给他们一个WebAppEntryPoint实例。当有人调用GWT.create(AbstractEntryPoint) and formfactor is mobil,给他们一个MobileAppEntryPoint实例。


接下来剩下困难的部分 - 如何构建formfactor属性,定义可能的值,并让应用程序在启动时选择正确的值?

为了帮助回答这个问题,让我们看一下 GWT 中已经存在的两个标准属性 -locale and user.agent。 Useragent 检测在 com.google.gwt.useragent.UserAgent 模块中进行管理 - 定义了属性,列出了选择属性的方法,并将一些有用的“确保此接线工作”位添加到应用程序中。可能的区域设置在 com.google.gwt.i18n.I18N 中启动,但设计为在您自己的应用程序中扩展。这里还有很多额外的东西,定义如何选择应该激活的区域设置。我们想要从 user.agent 中借鉴预先定义可能的形状因子的想法,并且想要从区域设置代码中读取正确的形状因子的想法。

首先,定义属性。

 <define-property name="formfactor" values="desktop, mobile" />

在此示例中,我们只允许这两个可能的值 - 实际上,您可能需要桌面(即大型和鼠标/键盘)、平板电脑(大型和触摸)、手机(小型和触摸)或其他一些变体。

接下来,决定如何读取正确的属性值。有两种基本方法可以做到这一点 - 通过在模块文件中编写一个简单的 javascript 片段,以及编写一个基于某些配置设置生成 JavaScript 的类。我将首先讨论最简单的一个,然后让您了解如何在 javascript 中实际检测此细节(如果您可以进一步澄清您拥有/需要/期望的内容,请更新问题或评论):

<!-- borrowing/adapting from 
http://code.google.com/p/google-web-toolkit/wiki/ConditionalProperties -->
<property-provider name="formfactor"><![CDATA[
  {
    var ua = window.navigator.userAgent.toLowerCase();
    if (ua.indexOf('android') != -1) { return 'mobile'; }
    if (ua.indexOf('iphone') != -1) { return 'mobile'; }
    return 'desktop';
   }
]]></property-provider>

同样,这位于模块中,并定义了一些简单的 JavaScript 来选择值formfactor- 如果用户代理包含字符串“android”或“iphone”,则激活mobile值,否则激活desktop。该代码将被放置在您的.nocache.js文件,并用于选择正确的排列(具有正确的入口点,如上所述)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据外形尺寸更改入口点类别 的相关文章

  • 如何在移动设备上使用纯 JavaScript 放大点击的图像

    我正在尝试创建单击时会放大的缩略图 目标是将选定的缩略图自身放大到设备的最大宽度 如果单击另一个缩略图 其图像将替换当前所选缩略图的图像 同一时间只能放大一张缩略图 图像应跨越设备的最大宽度 另外 我尝试使用纯 JavaScript 无 j
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • Google API OAuth 2.0 Titanium:缺少必需的参数:response_type

    我正在尝试在 Titanium 应用程序中从 Google 获取 access token 来访问 Google API 我已经注册了一个Android Oauth2 0客户端谷歌 API 控制台 https www rfc editor
  • DeviceOrientationEvent:当 beta 接近/达到 90 度时如何处理疯狂的伽玛?

    有人有 DeviceOrientationEvent 经验并且有手机 平板电脑吗 在具有陀螺仪的设备上运行以下代码片段 我注意到当 beta 接近 90 度 设备指向上方 时 gamma 沿 y 轴左 右旋转 变得很大且不可预测 我假设这是
  • 整个页面都是玻璃板

    有没有一种简单的方法可以在整个 HTML 页面上拥有一个 玻璃窗格 而不管缩放 幻灯片事件 平台 浏览器 移动 桌面 我所说的 简单 是指纯 CSS 支持 而不是插件 后备 插件建议也可能有用 Thanks 如果您只是指所有内容之上的一层
  • GWT CellTable getRowElement 抛出 IndexOutOfBoundsException

    我在 GWT 中使用 CellTable 并尝试在发生某些事件时向行添加样式 添加样式的代码如下 Range range playlistTable getVisibleRange int start range getStart for
  • 如何让更大的布局适合小设备屏幕?

    我有一个小问题meta viewport元素 问题是我的布局min width比我想要使用的许多屏幕分辨率都要大 所以将其设置为 没有帮助 结果我得到的页面必须缩小以适应设备宽度 如果我什至添加像 它也不起作用 发现了一个黑客来自CSS 技
  • iPhone 地址栏阻止了 HTML 页面标题按钮?

    我有一个带有两个标题按钮的移动网站 在 iPhone 上的纵向模式下 效果很好 我可以按按钮 问题是这样的 当我切换到纵向模式并尝试点击按钮时 本机 iPhone 地址栏就会显示 它位于标题上方 因此我无法按按钮 图片显示了问题 按一个按钮
  • HTML5 网站在手机屏幕关闭时运行?

    基本上 我的问题与这个话题 https stackoverflow com questions 15465242 html5 mobile app running while phone screen is off但现在已经是 2018 年
  • 如何自动将 gwt.codesvr 附加到页面 URL

    在托管模式下运行 GWT 应用程序时 通常需要在查询字符串参数中添加代码服务器的位置 例如 而不是index html可能需要打开index html gwt codesvr 127 0 0 1 9997 问题是gwt codesvr通常不
  • 如何在对角线元素上创建 CSS 边框

    这是一个例子 http jsfiddle net 52c7t http jsfiddle net 52c7t Simply 我试图让 div 位于右侧 并具有像左侧 div 一样的边框 我希望边框位于右侧 div 的左侧 我尝试了一百万种不
  • GWT 的 RPC 与 AJAX 不同吗?

    与 AJAX 调用相比 GWT Google Web Toolkit 的 RPC 远程过程调用 用于从浏览器 javascript 到服务器的异步操作有何不同或相似 如果它们不同 有人可以帮助我理解它们有何不同吗 我还听说这个 RPC 实现
  • 如何在 GWT 中实现登录屏幕?

    我正在为后端应用程序编写一个小型 GWT 前端 我想知道 GWT 应用程序的最佳安全模型是什么 我正在考虑实现一种 RPC 方法 该方法从客户端网页接收用户密码的 MD5 然后将会话 ID 传回客户端页面 或失败代码 所有后续调用都将简单地
  • 如何防止移动浏览器调整文本大小

    如何使文本在移动设备上的显示方式与在桌面设备上的显示方式相同 浅粉色区域中的文本在桌面和移动设备上是相同的 这正是我在 推荐 部分 以及许多其他领域 需要实现的目标 谢谢 Desktop view Mobile view CSS testi
  • 为什么在 GWT(或任何 Web 应用程序)中使用命令模式?

    根据这个视频 7 50 Google 建议在其请求处理 API 之上使用命令模式 还有一个看起来很有帮助的项目gwt 调度 http code google com p gwt dispatch 实现该模式 根据 gwt 调度我需要为每个命
  • 如何触发应用程序通过 REST 服务获取数据?

    我正在寻找一种方法来触发应用程序从远程 REST 服务获取数据 该方法不需要轮询 iOS 推送通知似乎不是一个选项 因为它可以被用户停用 然而 我可能是错的 是否有最佳实践来完成此任务 实际上 推送通知是可行的方法 在 ios8 及更高版本
  • 如何检测 Facebook 应用内浏览器?

    您有过 Facebook 应用内浏览器检测的经验吗 用户代理的核心区别是什么 我不想知道它是否是唯一的移动 ios chrome 我需要知道用户代理是否特定于Facebook 应用内浏览器 您可以在用户代理中检查 FBAN FBAV 检查此
  • gwt 文本框添加更改处理程序

    我有一个从设计师那里收到的文本框 但是我在 GWT 中编写了操作 问题是文本框为空 但是当通过按下按钮用值填充文本框时 将显示警报框 通知值已更改 但没有成功 帮助我 TextBox zip1 null function onModuleL
  • Kony应用程序是否必须使用Kony中间件?

    我正在使用 Kony Studio 创建跨平台应用程序 我们正在准备后端和网络服务 我们可以在不访问 Kony 中间件的情况下使用相同的服务吗 如果是 您能帮忙提供一些示例代码和教程吗 我们可以在不使用中间件的情况下调用使用服务HTTP请求
  • Google Drive Realtime API 离线和同步支持

    我想构建一个移动 Web 应用程序 为协作持久数据提供透明的离线和同步支持 我正在考虑使用 Google Drive Realtime API 作为后端 API 对离线和同步的支持程度如何 它只是通过包含的 API 脚本 自动 工作 还是应

随机推荐