谷歌 GWT 跨浏览器支持:是骗局吗?

8
我在FlashBuilder中开发了一个基于浏览器的全文搜索应用程序,它通过RESTful与远程Web服务器通信。这个软件适用于一些古老语言而非现代语言的微小市场,并且我不会从中获得利益,但是我确实花费了很多时间来开发它。
现在由于苹果不支持iPad上的Flash,我正在寻找100% JavaScript解决方案,并考虑使用GWT。它看起来很有前途,但是其中一款被作为GWT杰出示范的应用程序在其网站上有免责声明(为保护可能无辜的人,已删除公司和产品名称):
“你当前使用的Web浏览器(Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1045 Safari/532.5)未被{公司和产品名称}正式支持。如果您在使用该网站时遇到任何问题,请在联系{产品名称}支持之前安装Microsoft Internet Explorer 6+或Mozilla Firefox 3.5+。”
当GWT应用程序在Chrome上没有“正式”支持时,这是为什么?你给GWT跨浏览器支持打多少分(A、B、C、D、F)?对于不熟悉这些等级的人来说,A代表“优秀”,F代表失败,“C”代表平均水平。
感谢您的意见。
4个回答

11

所有基本的GWT小部件都是跨浏览器兼容的 - 这是通过一种称为Deferred Binding的东西实现的(不总是,但对于最严重的人来说 ;))。基本上,它允许根据客户端使用的浏览器(在编译期间进行此交换)将一个类无缝“替换”为另一个类。这样可以为所有符合标准的浏览器编写小部件,然后为您知道谁提供专门的版本(延迟绑定也用于i18n和其他很酷的东西,比如dependency injection)。关于延迟绑定的另一个很酷的事情是,客户端仅下载与他/她的浏览器特定的Web应用程序版本。因此,Firefox / Opera / Chrome / WebKit用户不必下载使Web应用程序在IE上工作的所有附加黑客。

长话短说:GWT提供了开发人员创建跨浏览器Web应用程序的工具/手段(并尝试通过提供基本小部件,使该过程尽可能简单),由开发人员使用这些工具-或者不使用;)

PS:同样的问题也可以问jQuery / mootools /等-为什么这些框架声称在所有浏览器上都能工作,但有许多站点/ Web应用程序使用它们并不支持所有这些浏览器? 因为开发人员选择了这样做。牺牲Web应用程序/网站只是为了使其在即将消失的(希望如此)浏览器上运行可能不值得。


感谢关于延迟绑定的信息。 - Tim
GWT是如何检测不同的浏览器的?如果我想自定义我的用户代理,应该怎么做? - CMCDragonkai
内部来看,它可能会查看您的用户代理(如果想确保,请检查源代码)。当涉及为不同的浏览器提供不同的小部件版本时,它们使用延迟绑定(Deferred Binding)(文档)。 - Igor Klimer

10

应用程序的GWT部分在Webkit浏览器(如Chrome和Safari)上运行得非常好。如果此网站的作者决定进行浏览器检测并对Webkit感到恐慌,那不是因为GWT,尽管可能存在不支持Webkit的GWT插件或其他组件。

引用FAQhttp://code.google.com/webtoolkit/doc/latest/FAQ_GettingStarted.html#What_browsers_does_GWT_support可知:

GWT支持以下浏览器:

  • Firefox 1.0、1.5、2.0、3.0和3.5
  • Internet Explorer 6、7和8
  • Safari 2、3和4
  • Chromium和Google Chrome
  • Opera 9.0

1

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接