GWT将脚本元素注入html文件

GWT将脚本元素注入html文件,gwt,Gwt,关于我的gwt项目。我有一个脚本称为字典: <script type="text/javascript" src=conf/iw_dictionary.js></script> 而不是在html文件中写入此脚本元素。我想在模块加载时从入口点将其注入html 我该怎么做呢?基本上是将脚本元素注入onModuleLoad()中: Element head=Document.get().getElementsByTagName(“head”).getItem(0); Sc

关于我的gwt项目。我有一个脚本称为字典:

<script type="text/javascript" src=conf/iw_dictionary.js></script>

而不是在html文件中写入此脚本元素。我想在模块加载时从入口点将其注入html


我该怎么做呢?

基本上是将脚本元素注入onModuleLoad()中:

Element head=Document.get().getElementsByTagName(“head”).getItem(0);
ScriptElement sce=Document.get().createScriptElement();
sce.setType(“text/javascript”);
sce.setSrc(“conf/iw_dictionary.js”);
头附肢儿童(sce);

浏览器将在注入后自动加载它。

使用
com.google.gwt.core.client.ScriptInjector
,因为它是专门为这样的东西创建的

ScriptInjector.fromUrl(“conf/iw_dictionary.js”).setCallback(
新回调函数(){
公共失效失效失效(异常原因){
警告(“脚本加载失败”);
}
成功时公开作废(作废结果){
警告(“脚本加载成功”);
}
}).inject();
您只需添加一个。



onModuleLoad
仅在加载脚本后才会被调用(就像您的html页面中有脚本一样)。

来自jusio、Dom和Thomas Broyer的答案在这里都有效。在我的例子中,我希望将一系列polyfill脚本注入GWT,以获得运行本机JS代码时所需的IE8支持。polyfill脚本需要可用于GWT iframe的窗口上下文,而不是主机页。为此,使用
ScriptInjector
是正确的方法,因为它将脚本附加到该级别。您可以使用
setWindow(顶部窗口)
使
ScriptInjector
将脚本安装到主机窗口。在我的*.gwt.xml文件中添加带有
标记的脚本似乎像使用@Dom的方法一样附加到主机窗口。

对我们使用2.3的人很有用(ScriptInjector在2.4中介绍)我正在我的web应用程序中实现CSRF guard。我已经完成了所有必需的配置,我可以看到令牌被生成/注入到请求头中。让我告诉您一点应用程序的架构,我有JSP页面,它使用Ajax调用服务以获取数据并在UI中显示。我这里的问题是“我们是否也可以使用CSRF guard保护服务调用?”如果可能的话,我该如何做,因为在调试执行时它不会进入CsrfGuardFilter.java类。感谢您的帮助。还有人问了一个类似的问题:
ScriptInjector
类在GWT_V2.7.0中提供。如果我必须用GWT_V.1.x注入一个javascript文件,那么这是可能的还是不可能的?这是可能的,但您必须使用下面答案中的解决方案。您可以使用Dom提供的答案(但您必须使用较旧的api来创建元素)或Thomas Broyer答案(我不能100%确定它是否适用于GWT 1.XX),我正在我的web应用程序中实现CSRF guard。我已经完成了所有必需的配置,我可以看到令牌被生成/注入到请求头中。让我告诉您一点应用程序的架构,我有JSP页面,它使用Ajax调用服务以获取数据并在UI中显示。我这里的问题是“我们是否也可以使用CSRF guard保护服务调用?”如果可能的话,我该如何做,因为在调试执行时它不会进入CsrfGuardFilter.java类。谢谢您的帮助。据我所知,我必须将
放入
Main.gwt.xml
文件中。我的问题是,这在gwt V1.XXXX中是否也适用?是的。但是,从GWT2.7开始,它将不起作用(至少在默认情况下是不起作用的),因为默认链接器现在是
xsiframe
,它不支持模块文件中的
(然后必须使用
ScriptInjector
,或者将脚本包含在HTML主机页中)。我正在我的web应用程序中实现CSRF guard。我已经完成了所有必需的配置,我可以看到令牌被生成/注入到请求头中。让我告诉您一点应用程序的架构,我有JSP页面,它使用Ajax调用服务以获取数据并在UI中显示。我这里的问题是“我们是否也可以使用CSRF guard保护服务调用?”如果可能的话,我该如何做,因为在调试执行时它不会进入CsrfGuardFilter.java类。谢谢你的帮助。
<script src='conf/iw_dictionary.js' />