1

IE9 専用の JavaScript 修正があり、そのブラウザ専用のプロジェクトにロードしたいと考えています。.gwt.xml で次のようなことができるかもしれないと思いました:

<script src="ie9svgfix.js">
    <when-property-is name="user.agent" value="ie9"/>
</script>

しかし、残念ながらこれはうまくいきません。GWTでこれを行うためのクリーンな方法を知っている人はいますか?

ありがとう、

ジョン

4

2 に答える 2

3

GWT で最もクリーンな方法は、deferred-binding を使用し、スクリプトにScriptInjectorIE9 順列を挿入することです。または、ホストページによってスクリプトが読み込まれるようにします。その場合、条件付きコメントを使用できます(Stanoが提案するように)。

遅延バインディングでは、IE9 の特定の実装で「遅延バインド」するクラスを作成する必要があります。

class SvgFix {
  public void fix() { /* no op */ }
}

class SvgFixIE9 {
  @Override
  public void fix() {
    ScriptInjector.fromUrl(GWT.getModuleBaseForStaticFiles() + "ie9svgfix.js")
        .setWindow(ScriptInjector.TOP_WINDOW)
        .inject();
  }
}

EntryPoint、スクリプトを挿入します。

GWT.<SvgFix>create(SvgFix.class).fix();

最後に、順列に基づいて適切な実装を選択します。

<replace-with class="com.example.client.SvgFixIE9">
  <when-type-assignable class="com.example.client.SvgFix" />
  <when-property-is name="user.agent" value="ie9" />
</replace-with>

ところで、<script>gwt.xml ファイルはxsiframeリンカーでサポートされていないことに注意してください。今後はそれを使用することをお勧めします (他のすべてのリンカーのすべての利点があり、欠点はありません。さらに、Super Dev が追加されます)。モード、柔軟性/構成可能性など)

于 2013-07-25T09:31:53.800 に答える