DevMode不能编译成JavaScript,但仍然必须遵守延迟绑定规则,其中很多都基于user.agent
属性,因此必须正确设置。
的user.agent
属性值是由一些脚本决定在所谓选择脚本(该*.nocache.js
文件)代码段产生的,这个脚本的内容可以取决于set-property
是你的GWT模块中有(S )。
举例来说,如果你编译GWT模块<set-property name="user.agent" value="gecko1_8" />
,该user.agent
属性将被硬编码在*.nocache.js
的gecko1_8
值。
如果您以后运行DevMode,除非它认为它必须覆盖现有的*.nocache.js
,否则它会使用它;因此在运行使用Chrome时gecko1_8
产生的*.nocache.js
的应用不仅会造成类似的错误:
com.google.gwt.core.client.JavaScriptException: (TypeError): Property 'user.agent' of object is not a function
如果您对多个浏览器进行编译,但随后的模块只为gecko1_8
运行DevMode的,然后在DEVMODE将使用在*.nocache.js
中找到的财产提供者来确定正在使用的用户代理,并且将其与模块确定的用户代理(在此处硬编码为gecko1_8
)进行比较,然后将警告你他们不匹配(因此你的应用程序可能会失效:代码将使用DOMImplMozilla
进行安装nce,而Chrome应该使用DOMImplSafari
)。
因此,要解决这个问题,可以删除*.nocache.js
文件,以便DevMode的会产生一个新的,或与模块,其user.agent
值匹配,你会在DevMode的使用浏览器重新编译应用程序。