Javascript 在GWT中使用JS显示HTML代码

Javascript 在GWT中使用JS显示HTML代码,javascript,java,html,gwt,Javascript,Java,Html,Gwt,我想基于GWT中的HTML代码创建一个页面。这段代码有一些js代码 它是从字符串对象创建的。 我在我的小部件中创建HTML对象: @UiField HTML htmlCont; 并将带有HTML的字符串放入内容: htmlCont.setHTML(htmlCode); 它通常是有效的,但是js代码不会被解释,当我尝试放置一些东西时 像这样: <p>Click the button to display an alert box:</p> <button

我想基于GWT中的HTML代码创建一个页面。这段代码有一些js代码 它是从字符串对象创建的。 我在我的小部件中创建HTML对象:

  @UiField
  HTML htmlCont;
并将带有HTML的字符串放入内容:

htmlCont.setHTML(htmlCode);
它通常是有效的,但是js代码不会被解释,当我尝试放置一些东西时 像这样:

<p>Click the button to display an alert box:</p>

<button onclick="clickFun()">Try it</button>

<script>
function clickFun() {
    alert("I am an alert box!");
}
</script>
单击按钮以显示警报框:

试试看 函数clickFun(){ 警报(“我是一个警报框!”); }
在我的浏览器中,我得到一个错误:

未捕获引用错误:未定义clickFun


我做错了什么?

您不能添加带有
HTML
元素的Javascript代码,它不会是可执行的

使用以下命令添加Javascript:

String scriptBody = "var foo = ...";
ScriptInjector.fromString(scriptBody).inject();


理想情况下,您应该自己创建小部件或元素,并使用GWT方法将处理程序附加到它们或使用它们。

谢谢您的回复。你能解释一下我需要在哪里使用ScriptInjector吗?因为当我在设置html内容的方法中使用它时,它不起作用。。。在我尝试使用JSNI中的本机方法之前,代码可能不同,并且可能有多个方法。@M.S.通常这样做的原因是什么?我想用js(类似于:)测试一些html代码,而这些代码通常是different@M.S.这是用于实际产品的吗?如果不是,请在GWT应用程序之外使用jsni或简单HTML对其进行测试。