我正在实现一个web应用程序,它将根据不同的浏览器支持不同的视图。例如,在移动浏览器中,它将使用较少的UI元素向用户显示较小的视图。但我们想用同样的主持人。
我有一个在ClientModule中手动添加浏览器类型检测逻辑的解决方案,例如:
if (browser == "iphone") {
bindPresenter(HomePresenter.class, HomePresenter.MyView.class, HomeView.class, HomePresenter.MyProxy.class);
} else if (browser == "ipad") {
bindPresenter(HomePresenter.class, HomePresenter.MyView.class, IPadHomeView.class, HomePresenter.MyProxy.class);
} else {
bindPresenter(HomePresenter.class, HomePresenter.MyView.class, IPhoneHomeView.class, HomePresenter.MyProxy.class);
}我想知道是否可以在GWT-platform中使用一些方法,比如延迟绑定。(但我更愿意遵循GWT-plarform的结构,而不是在xxx.gwt.xml中添加延迟绑定代码)。
所以我的问题是:
1)有没有其他方式实现上面提到的功能?
2)哪种方式最好?为什么?
提前感谢!
诚挚的问候,
家宽W
发布于 2012-03-22 11:36:44
GWT不允许您设置自定义用户代理类型。你只能选择他们的壁虎、gecko1_7、safari、IE6、IE7、IE8和opera。
也就是说,您可以使用Window.Navigator.getUserAgent(),或通过属性提供程序对逻辑进行access the user agent directly和设置,以进行相应的切换。
请看how to do mobile browser detection in GWT上关于MVP的类似问题。
发布于 2012-03-22 22:25:42
在gwt samples文件夹中有一个示例,它可以执行您想要的操作。我在我的项目-except中使用了示例代码的一个版本,使用Gin来处理clientfactory功能。该示例名为mobilewebapp。它涉及到在.gwt.xml中使用formfactor方法来确定您所在的系统-在本例中,它将系统分为台式机、移动设备和平板电脑。然后,在稍后的gwt.xml中,它根据外形尺寸交换客户端工厂-我交换的是gin模型。以下是指向mobilwebapp源代码的链接
发布于 2012-03-23 18:02:02
查看gwtp google组,这是一个很好的来源,有人在那里发布了一篇关于他在清酒问题上所做的努力的pdf。不管怎样,如果我没记错的话,他为每个客户端的presenters和views保存了多个gin模块,在加载时运行自定义的js代码,然后在ginClinet类上安装正确的模块。
https://stackoverflow.com/questions/9815435
复制相似问题