我有一个专门针对 IE9 的 JavaScript 修复程序,并且只想为那个浏览器将它加载到我的项目中。我想我也许可以在我的 .gwt.xml 中做这样的事情:
<script src="ie9svgfix.js">
<when-property-is name="user.agent" value="ie9"/>
</script>
但不幸的是,这不起作用。有人知道在 GWT 中执行此操作的干净方法吗?
谢谢,
乔恩
我有一个专门针对 IE9 的 JavaScript 修复程序,并且只想为那个浏览器将它加载到我的项目中。我想我也许可以在我的 .gwt.xml 中做这样的事情:
<script src="ie9svgfix.js">
<when-property-is name="user.agent" value="ie9"/>
</script>
但不幸的是,这不起作用。有人知道在 GWT 中执行此操作的干净方法吗?
谢谢,
乔恩
GWT 中最简洁的方法是使用延迟绑定并ScriptInjector
在 IE9 排列中注入脚本;或者让主机页面加载脚本,在这种情况下,您可以使用条件注释(如 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模式、灵活性/可配置性等)
您可以尝试条件注释:
<!--[if IE 9]>
<script src="ie9svgfix.js"></script>
<![endif]-->