使用GWT检测浏览器版本?

时间:2010-06-17 18:16:54

标签: browser gwt version-detection

是否有GWT api告诉我它检测到哪个浏览器版本?

我发现IE7的正则表达式处理存在缺陷,需要编写一些棘手的String.matches()表达式。

3 个答案:

答案 0 :(得分:26)

您可以使用以下代码检测浏览器类型。

public static native String getUserAgent() /*-{
return navigator.userAgent.toLowerCase();
}-*/;

然后你可以调用该函数并查看浏览器的类型。例如,下面的代码决定它是否是Internet Explorer。

if(getUserAgent().contains("msie"))
{
///////// Write your code for ie
}

This page拥有几乎所有人都知道的浏览器的用户代理。

答案 1 :(得分:26)

您可以使用GWT deferred binding using replacement并创建您使用正则表达式的类的两个实现。

例如,假设您的类名为Parser,它包含除IE7之外的所有Web浏览器的代码。然后,您可以扩展Parser并为IE7创建ParserIE7类。然后在您的GWT模块配置文件中添加:

<replace-with class="Parser">
  <when-type-is class="Parser"/>
</replace-with>

<replace-with class="ParserIE7">
  <when-type-is class="Parser" />
  <when-property-is name="user.agent" value="ie7"/>
</replace-with>

然后致电

Parser parser = GWT.create(Parser.class);

您应该在Parser变量中有parser的正确(依赖于Web浏览器)实现。

您可以找到更多详情here

答案 2 :(得分:7)

如果您使用的是GXT库,则可以使用 GXT .isChrome来检测Chrome,您可以找到 GXT类的不同数据成员来检测特定浏览器。