2

ターゲットブラウザごとに異なるJavaコードをコンパイルするようにGWTに指示する方法はありますか?

GWTは現在、ターゲットブラウザーごとに異なるスクリプトを作成し、すべて同じソースファイルから生成されます。ただし、さまざまなブラウザで非標準機能を使用する場合(たとえば、ファイルをブラウザにドラッグアンドドロップする場合)、サポートはブラウザごとに大きく異なり、さまざまなコードを記述する必要があります。

のようなものはありますか

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

4

1 に答える 1

11

はい、もちろんです。これは遅延バインディングと呼ばれます。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 ドキュメントからのものです。

于 2010-06-21T13:15:12.690 に答える