2013-07-25 78 views
1

我已經獲得了專門針對IE9的JavaScript修補程序,並且希望僅將它加載到我的項目中,僅用於該瀏覽器。我想我可能可以在我的.gwt.xml中做這樣的事情:GWT - 加載瀏覽器特定的JavaScript

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

但是不幸的是,這不起作用。有沒有人知道一個乾淨的方式來做到這一點在GWT?

感謝,

喬恩

回答

3

在GWT的乾淨方式是使用遞延結合,並與在該ScriptInjector注入腳本IE9排列;或者讓主機頁面加載腳本,在這種情況下,您可以使用條件註釋(as suggested by 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鏈接器,我會的鼓勵您繼續使用它(它具有所有其他鏈接器的所有優點,並且沒有任何缺點,此外還增加了超級開發模式,靈活性/可配置性等)。