GWT user.agent是否适用于托管模式?
据我所知,GoogleWebToolkit.gwt.xml文件中的“user.agent”属性指定了Java到Java脚本转换的目标。因为托管模式仍然运行Java而不是Javascript,我不明白为什么google chrome抱怨“user.agent”值设置不正确。更奇怪的是,即使我用GWT user.agent是否适用于托管模式?,gwt,maven,gxt,Gwt,Maven,Gxt,据我所知,GoogleWebToolkit.gwt.xml文件中的“user.agent”属性指定了Java到Java脚本转换的目标。因为托管模式仍然运行Java而不是Javascript,我不明白为什么google chrome抱怨“user.agent”值设置不正确。更奇怪的是,即使我用向它添加“safari”,它也会不断抱怨 我能在这里做什么 我使用GWT版本2.3.0和GXT版本2.2.5。DevMode不编译为JavaScript,但仍然必须遵守延迟绑定规则,其中许多规则基于user.
向它添加“safari”,它也会不断抱怨
我能在这里做什么
我使用GWT版本2.3.0和GXT版本2.2.5。DevMode不编译为JavaScript,但仍然必须遵守延迟绑定规则,其中许多规则基于
user.agent
属性,因此必须正确设置
user.agent
属性值由所谓的选择脚本(*.nocache.js
文件)中生成的某些脚本片段确定,该脚本的内容可能取决于GWT模块中的set属性
例如,如果使用
编译GWT模块,则user.agent
属性将硬编码到*.nocache.js
中的gecko1_8
值
如果以后运行DevMode,除非它认为必须覆盖现有的*.nocache.js
,否则它将使用它;因此,当为gecko1_8
生成*.nocache.js
时,使用Chrome运行应用程序只会导致类似以下错误:
com.google.gwt.core.client.JavaScriptException: (TypeError): Property 'user.agent' of object is not a function
如果您为多个浏览器编译,但随后仅为gecko1_8
运行带有模块的DevMode,则DevMode将使用*.nocache.js
中找到的属性提供程序来确定实际使用的用户代理(对于Chrome,woul dbesafari
),并将其与从模块中确定的属性提供程序进行比较(此处硬编码为gecko1_8
),然后会警告您它们不匹配(因此,您的应用程序可能会出现故障:例如,代码将使用DominpMozilla
,而DominpSafari
应该在Chrome中使用)
因此,要解决此问题,请删除*.nocache.js
文件,以便DevMode必须生成一个新的文件,或者使用user.agent
值与您将在DevMode中使用的浏览器匹配的模块重新编译您的应用程序