设置IE9(GWT)的用户代理

罗伯·福克斯(Rob Fox):

我正在尝试使用IE9访问页面时将用户代理更改为safari。

我将此写入gwt.xml文件:

<set-property name='user.agent' value='safari'>
   <when-property-is name="user.agent" value="ie9" />
</set-property>

但是IE9现在根本找不到任何用户代理(甚至不退回自己的代理)。我究竟做错了什么?

编辑:我必须使用GWT 2.0.4

EDIT2:阅读答案的注释以查看如何解决。

克里斯·勒彻(Chris Lercher):

我以前没有做过,但是我假设您将必须实现自己的UserAgentPropertyGenerator(因为这是动态评估用户代理属性的类!),然后像com.google.gwt.user.UserAgent中那样绑定它.gwt.xml:

<property-provider 
   name="user.agent"
   generator="com.google.gwt.user.rebind.UserAgentPropertyGenerator"/>

对于旧版GWT(<2.3.0),可以在com.google.gwt.user.UserAgent.gwt.xml中直接将其配置为:

  <property-provider name="user.agent"><![CDATA[
      var ua = navigator.userAgent.toLowerCase();
      var makeVersion = function(result) {
        return (parseInt(result[1]) * 1000) + parseInt(result[2]);
      };

      if (ua.indexOf("opera") != -1) {
        return "opera";
      } else if (ua.indexOf("webkit") != -1) {
        return "safari";
      } else if (ua.indexOf("msie") != -1) {
        if (document.documentMode >= 8) {
          return "ie8";
        } else {
          var result = /msie ([0-9]+)\.([0-9]+)/.exec(ua);
          if (result && result.length == 3) {
            var v = makeVersion(result);
            if (v >= 6000) {
              return "ie6";
            }
          }
        }
      } else if (ua.indexOf("gecko") != -1) {
        var result = /rv:([0-9]+)\.([0-9]+)/.exec(ua);
        if (result && result.length == 3) {
          if (makeVersion(result) >= 1008)
            return "gecko1_8";
          }
        return "gecko";
      }
      return "unknown";
  ]]></property-provider>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章