我通过编译项目来获得疯狂的排列数量.如果我设置选项:
<set-property name="user.agent" value="gecko1_8" />
Run Code Online (Sandbox Code Playgroud)
我得到:编译1008个排列
如果我设置:
<set-property name="locale" value="de"/>
<set-property name="user.agent" value="gecko1_8" />
Run Code Online (Sandbox Code Playgroud)
我得到:编译36个排列
这是完整的 .gwt.xml
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />
<!-- We need the JUnit module in the main module, -->
<!-- otherwise eclipse complains (Google plugin bug?) -->
<inherits name='com.google.gwt.junit.JUnit' />
<!-- GXT Theme -->
<inherits name='com.sencha.gxt.theme.gray.Gray' />
<!-- caneldar -->
<inherits name='com.bradrydzewski.gwt.calendar.Calendar' />
<inherits name='com.bradrydzewski.gwt.calendar.theme.google.Google' />
<inherits name='com.allen_sauer.gwt.dnd.gwt-dnd' />
<!-- Other module inherits -->
<inherits name="com.google.gwt.json.JSON" />
<inherits name='com.google.gwt.visualization.Visualization' />
<inherits name='com.chap.links.Timeline' />
<!-- Locale -->
<inherits name="com.google.gwt.i18n.I18N"/>
<set-property name="locale" value="de"/>
<set-property name="user.agent" value="gecko1_8" />
Run Code Online (Sandbox Code Playgroud)
什么可能导致大量的排列?
Col*_*rth 12
看起来你正在使用GXT(来自Grayinherits语句),但实际上并没有继承GXT自己(setup.txt中的第三步).这不一定是坏事,但避免使用该语句意味着您正在跳过一些限制可能的排列数量的设置.在您的Gray行之前添加:
<inherits name='com.sencha.gxt.ui.GXT'/>
Run Code Online (Sandbox Code Playgroud)
然后,除了user.agent=之外gecko1_8,添加它(或者除此之外)以限制GXT排列(更多内容如下):
<set-property name="gxt.user.agent" value="gecko1_9" />
Run Code Online (Sandbox Code Playgroud)
(注意,我们引用的Gecko 1.9而不是1.8,因为在1.8,我们有这是一个解决办法至少一个错误并不在1.9必需的.)
user.agent?事实证明,user.agent无法轻松扩展 - fallback系统对现有CssResource声明没有任何帮助.这意味着,如果GXT添加了ie10排列(它在3.0中完成),或者想要有一个独特的ie7排列(而不是与ie6混在一起),或者单独的Chrome与Safari排列(Chrome缩放会发出任何问题吗?),我们可能会破坏项目中的现有代码.
此外,GXT添加了一个'os'属性,让我们处理平台问题.这可以是'mac','linux'或'windows'(或3.0.3以后的'unknown'来处理Solaris,Chrome OS等).没有大量的情况需要这样,但是一个例子包括本机OS X复选框,一旦你点击它们就会模糊,而不是mac上的windows,linux或firefox.
user.agent如果我设置,为什么我不需要设置gxt.user.agent?由于GXT用户代理属性集比GWT用户代理更广泛,因此我们使用以下行根据GXT用户代理设置设置GWT用户代理:
<!-- From /com/sencha/gxt/core/Core.gwt.xml about line 110 -->
<!-- Restrict the permutation explosion -->
<set-property name="user.agent" value="ie6">
<any>
<when-property-is name="gxt.user.agent" value="ie6" />
<when-property-is name="gxt.user.agent" value="ie7" />
</any>
</set-property>
<set-property name="user.agent" value="ie8">
<when-property-is name="gxt.user.agent" value="ie8" />
</set-property>
<set-property name="user.agent" value="ie9">
<any>
<when-property-is name="gxt.user.agent" value="ie9" />
<when-property-is name="gxt.user.agent" value="ie10" />
</any>
</set-property>
<set-property name="user.agent" value="gecko1_8">
<any>
<when-property-is name="gxt.user.agent" value="gecko1_8" />
<when-property-is name="gxt.user.agent" value="gecko1_9" />
</any>
</set-property>
<set-property name="user.agent" value="safari">
<any>
<when-property-is name="gxt.user.agent" value="safari3" />
<when-property-is name="gxt.user.agent" value="safari4" />
<when-property-is name="gxt.user.agent" value="safari5" />
<when-property-is name="gxt.user.agent" value="air" />
<when-property-is name="gxt.user.agent" value="chrome" />
</any>
</set-property>
<set-property name="user.agent" value="opera">
<when-property-is name="gxt.user.agent" value="opera" />
</set-property>
Run Code Online (Sandbox Code Playgroud)
除非采取某些措施来限制这些属性,否则13个浏览器属性乘以三个操作系统应该会给出大约39个排列.默认情况下,GXT.gwt.xml使用以下行将这些限制为基本的6种排列:
<collapse-property name="user.agent.os" values="*" />
<collapse-property name="gxt.user.agent" values="air, safari*, chrome" />
<collapse-property name="gxt.user.agent" values="ie6, ie7" />
<collapse-property name="gxt.user.agent" values="ie9, ie10" />
<collapse-property name="gxt.user.agent" values="gecko*" />
Run Code Online (Sandbox Code Playgroud)
通过不继承GXT,您有机会设置自己的排列限制.如果您不希望自己设置它们,请继续并继承GXT本身.有关更多信息<collapse-property>,请<collapse-all-properties />访问http://code.google.com/p/google-web-toolkit/wiki/SoftPermutations
| 归档时间: |
|
| 查看次数: |
2695 次 |
| 最近记录: |