GWT - условная компиляция на основе браузера - PullRequest
2 голосов
/ 21 июня 2010

Есть ли способ сообщить GWT о компиляции другого кода Java для целевого браузера?

GWT сегодня создает разные сценарии для целевого браузера, и все они создаются из одного и того же исходного файла.Однако при работе с нестандартными функциями в разных браузерах (например, с помощью перетаскивания файлов в браузер) поддержка в разных браузерах существенно различается, что требует написания разного кода.

Есть ли что-то вроде

// if IE 
.. some Java code to compile into the IE script
// else if chrome
.. some Java code to compile into the chrome script

и т. Д.

1 Ответ

11 голосов
/ 21 июня 2010

Да, конечно.Это называется отложенным связыванием.Проверьте http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsDeferred.html

Вот выдержка

<module>

  <!--  ... other configuration omitted ... -->

  <!-- Fall through to this rule is the browser isn't IE or Mozilla -->
  <replace-with class="com.google.gwt.user.client.ui.impl.PopupImpl">
    <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>
  </replace-with>

  <!-- Mozilla needs a different implementation due to issue #410 -->
  <replace-with class="com.google.gwt.user.client.ui.impl.PopupImplMozilla">
    <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl" />
    <any>
      <when-property-is name="user.agent" value="gecko"/>
      <when-property-is name="user.agent" value="gecko1_8" />
    </any>
  </replace-with>

  <!-- IE has a completely different popup implementation -->
  <replace-with class="com.google.gwt.user.client.ui.impl.PopupImplIE6">
    <when-type-is class="com.google.gwt.user.client.ui.impl.PopupImpl"/>
    <when-property-is name="user.agent" value="ie6" />
  </replace-with>
</module>

Для других браузеров, я считаю, это будет работать без правила провалаЯ думаю, что правило провала здесь, чтобы ускорить процесс.Не принимайте это как должное, поскольку я не уверен на 100%.

Это из официальной документации GWT.

...