如何了解GWT中的用户代理

如何了解GWT中的用户代理,gwt,browser-detection,Gwt,Browser Detection,我正在尝试编写特定于浏览器的代码。是否有GWT API来确定客户端使用的浏览器?上的GWT开发者指南页面提供了一个返回UserAgent字符串的JSNI函数 但是,请注意,您可能希望使用来编写特定于浏览器的代码,而不是检测UserAgent 编辑:Kasturi指出,其实现方式如下: /** * Gets the navigator.appName. * * @return the window's navigator.appName. */ public static native S

我正在尝试编写特定于浏览器的代码。是否有GWT API来确定客户端使用的浏览器?

上的GWT开发者指南页面提供了一个返回UserAgent字符串的JSNI函数

但是,请注意,您可能希望使用来编写特定于浏览器的代码,而不是检测UserAgent

编辑:Kasturi指出,其实现方式如下:

/**
 * Gets the navigator.appName.
 *
 * @return the window's navigator.appName.
 */
public static native String getAppName() /*-{
  return $wnd.navigator.appName;
}-*/;

是的,这应该和跨浏览器支持页面上提到的函数一样(除了它不调用toLowerCase()),不过您最好还是使用延迟绑定。

刚刚发现Navigator.getUserAgent()可以用于检测。这是一个好主意吗?延迟绑定通常是一个更好的选择,因为GWT将特定于浏览器的代码发送到该浏览器(也就是说,仅用于IE的代码将仅发送到IE浏览器),从而减少下载大小。但是,这将限制您使用GWT识别的用户代理字符串。例如,若您想向IE6.0.1.001用户而不是其他IE用户显示消息,最好使用Navigator.getUserAgent。如果您想知道GWT支持哪些广泛的用户代理类别,请查看我写的这篇博文: