Browser 使用GWT检测浏览器版本?

Browser 使用GWT检测浏览器版本?,browser,gwt,version-detection,Browser,Gwt,Version Detection,是否有GWTAPI可以告诉我检测到的浏览器版本 我发现IE7的正则表达式处理存在缺陷,需要编写一些棘手的String.matches()表达式。您可以使用下面的代码检测浏览器类型 public static native String getUserAgent() /*-{ return navigator.userAgent.toLowerCase(); }-*/; 然后您可以调用该函数并查看浏览器的类型。例如,下面的代码决定它是否是internet explorer if(getUserA

是否有GWTAPI可以告诉我检测到的浏览器版本


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

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

public static native String getUserAgent() /*-{
return navigator.userAgent.toLowerCase();
}-*/;
然后您可以调用该函数并查看浏览器的类型。例如,下面的代码决定它是否是internet explorer

if(getUserAgent().contains("msie"))
{
///////// Write your code for ie
}
几乎所有已知的浏览器都有用户代理。

您可以使用并创建两个使用regex的类实现

例如,假设您的类名为
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
实现(依赖于web浏览器)


您可以找到更多详细信息。

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

+1如果您在不同的解析器之间有很多更改,并且希望最小化服务器和浏览器之间的流量,那么这是一个有效的答案。您能描述IE7的漏洞吗我们?什么是示例正则表达式,IE7以什么方式出错(以及其他浏览器以什么方式出错)?我不认为这会影响问题或答案,但如果能在这里为子孙后代提供这些信息,那就太好了。除了IE7之外,我还有一个密码正则表达式,它在测试的每个浏览器中都匹配==true。PASSWORD_REGEX=“((?=.*\\d)(?=.[a-z])(?=.[a-z]){8,24})”代替JSNI方法如何?我如何知道浏览器是否为“Mozilla Fire Fox/Safari/Opera/Chrome”。你能为其他浏览器发布与IE相同的条件吗?同样,对于IE11,这将返回false,因为它的userAgent字符串不包含
msie
。人们应该使用
contains(“msie”)| | contains(“trident”)
来匹配IE11。使用第三方库来完成这些基本/琐碎的任务(不管它们是否用于其他目的)是一个非常坏的习惯。不过,向下投票还是有点苛刻。GXT是一个非常流行的图书馆,找到这篇文章的人可能已经在使用它了。
Parser parser = GWT.create(Parser.class);