GWT模块XML - 如何重新定义和使用多个用户代理

5 gwt

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=FAQ_CompileOnePermutation

在我学到的文章中,我可以加速编译器,但指定目标用户代理.问题我该如何指定多个用户代理?假设我的应用程序支持ie6和FF3

<set-property name="user.agent" value="ie6,geck1_8" />
Run Code Online (Sandbox Code Playgroud)

不起作用 - 我得到XML解析错误:

[ERROR] Invalid property value 'ie6,gecko1_8'
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法在模块XML文件中指定多个特定用户代理?

小智 7

在GWT2.4中将user.agent值设置为gecko时,我遇到了类似的错误消息.所以我环顾四周,发现gwt代码定义了可能的值.

如果您查看com.google.gwt.user.UserAgent.gwt.xml中的gwt-user.jar,您可以看到您正在使用的GWT版本的可能值.

对于GWT2.4,这是我发现的:

<!-- Browser-sensitive code should use the 'user.agent' property -->
  <define-property name="user.agent" values="ie6" />
  <extend-property name="user.agent" values="ie8" />
  <extend-property name="user.agent" values="gecko1_8" />
  <extend-property name="user.agent" values="safari" />
  <extend-property name="user.agent" values="opera" />
  <extend-property name="user.agent" values="ie9" fallback-value="ie8" />
  <property-provider name="user.agent" generator="com.google.gwt.user.rebind.UserAgentPropertyGenerator"/>
Run Code Online (Sandbox Code Playgroud)

因此,在我的情况下,gecko不是user.agent的有效值,如果我使用gecko1_8,它可以很好地编译Firefox.


Sha*_*ant 6

适用于GWT 1.6,您的*.gwt.xml文件:

<module rename-to="moduleName">
      <!-- blah blah -->
      <set-property name="user.agent" value="ie6,gecko,gecko1_8" />
      <!-- generate perms for IE and firefox only -->
</module>
Run Code Online (Sandbox Code Playgroud)


小智 6

对于像chrome这样的基于webkit的浏览器,使用"safari"作为用户代理


Gle*_*enn 1

还没有。这个想法是,您可以快速开发一种浏览器,然后编译一次以针对所有浏览器进行部署(即进行最终测试),并由 GWT 处理浏览器差异。不要忘记,在部署时 GWT 将优化每个浏览器的下载,因此最终您选择多少个用户代理并不重要。