是否有GWT api告诉我它检测到哪个浏览器版本?
我发现IE7的正则表达式处理存在缺陷,需要编写一些棘手的String.matches()表达式。
答案 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类的不同数据成员来检测特定浏览器。