GWT 2.5.1和Kindle paperwhite用户代理

时间:2013-10-29 09:06:26

标签: java gwt user-agent kindle

我正在使用GWT 2.5.1并且正在使用Kindle纸质白皮书型号EY21的浏览器访问使用Tomcat 7.0.32部署的.war。

问题是GWT无法正确获取Kindle的用户代理,我的意思是,我得到以下值:

  • 从我的服务器: getMyThreadLocalRequest()。getHeader(“user-agent”) - > Mozilla / 5.0(X11; U; Linux armv7l,如Android; en-us)AppleWebKit / 531.2 +(KHTML,类似Gecko)版本/ 5.0 Safari / 533.2 + Kindle / 3.0 + - > OK!

  • 来自网络 www.whatsmyuseragent.com - > Mozilla / 5.0(X11; U; Linux armv7l,如Android; en-us)AppleWebKit / 531.2 +(KHTML,类似Gecko)版本/ 5.0 Safari / 533.2 + Kindle / 3.0 + - >好的!

  • 来自GWT 2.5.1库:Window.Navigator.getUserAgent() - > Mozilla / 5.0(X11 ;; U; Linux armv7l; en-us)AppleWebKit / 534.26 +(KHTML,类似Gecko)版本/ 5.0 Safari / 534.26 + - > ?¿?¿

所以,我认为GWT功能没有为Kindle paperwhite浏览器的用户代理获得正确的值......

任何想法?

提前多多感谢!!

1 个答案:

答案 0 :(得分:2)

GWT计算客户端的user.agent值的方法是在用于创建引导脚本的类UserAgentPropertyGenerator.java中:

  body.println("var ua = navigator.userAgent.toLowerCase();");

  [...]

  // webkit family
  new UserAgentPropertyGeneratorPredicate("safari")
  .getPredicateBlock()
    .println("return (ua.indexOf('webkit') != -1);")
  .returns("'safari'"),

看一下这个代码和你发送的用户代理字符串,gwt必须选择webkit排列(因为用户代理包含WebKit)。

如果您没有收到任何错误,只是一个空白页面,也许您已经在模块文件中禁用了webkit浏览器(safari)的排列,或者您正在使用除user.agent之外的其他属性。项目,以及某些属性组合与您的设备不匹配。

如果您正在使用xsiframe链接器,请查看编译器输出文件夹中生成的compilation-mappings.txt文件,该文件具有包含排列名称和属性的列表。