检测GWT中是否没有为特定浏览器构建JavaScript

时间:2013-10-09 21:33:34

标签: gwt

我们只需要支持IE8和IE9,而不支持其他浏览器。当我使用Chrome或Firefox时,我得到的是一个空白页面(主页)。有没有办法检测或被告知没有找到该浏览器的js文件?或者我是否必须在主机页面中查看用户代理并在浏览器不是IE8或IE9时显示消息?

1 个答案:

答案 0 :(得分:3)

有不同的方法可以解决这个问题,但通常的gwt方式是使用Deferred-Binding

只需创建一个用于加载应用代码的类,并使用GWT.create()中的onModuleLoad对其进行实例化。然后,您可以为每个排列设置不同的类实现。

  package mynamespace.client;
  ...

  public class MyEntryPoint implements EntryPoint {

    public void onModuleLoad() {
      // create the appropriate implementation of the App class
      App app = GWT.create(App.class);
      // call the method to load the application.
      app.onLoad();
    }

    // Default implementation
    public static class App {
      public void onLoad() {
        Window.alert("This App is only supported in IE");
      }
    }

    // Implementation for IE
    public static class AppIE extends App {
      public void onLoad() {
        Window.alert("This is a supported Browser");
      }
    }
  }

.gwt.xml文件中定义每个用户代理使用哪种实现:

  <replace-with class="mynamespace.client.MyEntryPoint.AppIE">
    <when-type-is class="mynamespace.client.MyEntryPoint.App"/>
    <any>
         <when-property-is name="user.agent" value="ie6"/>
         <when-property-is name="user.agent" value="ie8"/>
         <when-property-is name="user.agent" value="ie9"/>
    </any>
  </replace-with>

IMO,我认为nocache.js引导脚本应该有一种机制,可以在没有特定浏览器的排列时提醒用户。也许打电话给gwt:onLoadErrorFn(请参阅我在gwt issue#8135的评论)