1

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

4

1 回答 1

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的评论)

于 2013-10-10T05:52:15.860 回答