如何在GWT中找到用户代理

Kas*_*uri 21 gwt browser-detection

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

aem*_*aem 25

跨浏览器支持的GWT Developer's Guide页面提供了一个返回UserAgent字符串的JSNI函数.

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

编辑: Kasturi指出Window.Navigator.getUserAgent(),它实现如下:

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

所以,是的,这应该执行跨浏览器支持页面上提到的功能(除了它不会调用toLowerCase()),尽管再次使用延迟绑定可能会更好.

  • 延迟绑定通常是更好的选择,因为GWT将浏览器特定代码发送到该浏览器(即,仅针对IE的代码将仅发送到IE浏览器),从而减少下载大小.但是,这会限制您使用GWT识别的用户代理字符串.例如,如果要向IE6.0.1.001用户显示消息,而不向其他IE用户显示消息,则最好使用Navigator.getUserAgent.如果您想知道GWT支持的广泛用户代理类别,请查看我写的这篇博文:http://www.mooreds.com/wordpress/archives/000574 (4认同)
  • 刚刚发现Navigator.getUserAgent()可用于检测.这是个好主意吗? (2认同)