HTMLPanel中的Javascript

HTMLPanel中的Javascript,javascript,html,gwt,panel,Javascript,Html,Gwt,Panel,我想在HTMLPanel元素中包含Javascript代码,但它不起作用。你能帮帮我吗?提前谢谢 脚本/pro.js alert('hello'); 使用HTMLPANEL不起作用(不显示警报) MyPage.java(MyPage.html的入口点) String preHtml=“”; HTMLPanel prePanel=新HTMLPanel(预TML); get(“scriptContainer”).add(prePanel); MyPage.html String preHtml=

我想在HTMLPanel元素中包含Javascript代码,但它不起作用。你能帮帮我吗?提前谢谢

脚本/pro.js

alert('hello');
使用HTMLPANEL不起作用(不显示警报)

MyPage.java(MyPage.html的入口点)

String preHtml=“”;
HTMLPanel prePanel=新HTMLPanel(预TML);
get(“scriptContainer”).add(prePanel);
MyPage.html

String preHtml="<script type=\"text/javascript\" src=\"Scripts/pro.js\"></script>";
HTMLPanel prePanel=new HTMLPanel(preHtml);
RootPanel.get("scriptContainer").add(prePanel);
<td align="left" valign="top" id="scriptContainer"></td>
<td align="left" valign="top"><script type="text/javascript" src="Scripts/pro.js"></script></td>

如果没有HTMLPANEL,则不工作(显示警报)

MyPage.html

String preHtml="<script type=\"text/javascript\" src=\"Scripts/pro.js\"></script>";
HTMLPanel prePanel=new HTMLPanel(preHtml);
RootPanel.get("scriptContainer").add(prePanel);
<td align="left" valign="top" id="scriptContainer"></td>
<td align="left" valign="top"><script type="text/javascript" src="Scripts/pro.js"></script></td>

我认为应该换个方向。引用javadocs的HTMLPanel

一个包含HTML的面板,可以将子窗口小部件附加到已标识的 HTML中的元素

应该包装容器而不是脚本。除非您完全有理由使用HTMLPanel包装脚本,否则下面的示例是有效的

HTMLPanel html = new HTMLPanel("<table><tr><td id='scriptContainer'></td></tr></table>");
RootPanel.get().add(html);  
Element script = DOM.createElement("script");
DOM.setElementAttribute(script,"language","JavaScript");
DOM.setElementAttribute(script,"src","Scripts/pro.js");
DOM.appendChild(DOM.getElementById("scriptContainer"),script);
HTMLPanel html=newhtmlpanel(“”);
RootPanel.get().add(html);
元素脚本=DOM.createElement(“脚本”);
setElementAttribute(脚本,“语言”,“JavaScript”);
setElementAttribute(脚本,“src”,“Scripts/pro.js”);
appendChild(DOM.getElementById(“scriptContainer”),脚本);

我又试了一次,但不起作用。请在编辑的问题中查找更多信息。提前谢谢!明亮的现在它起作用了。如果我想将这个HTMLPanel添加到MyPage.html的一个特定点,我是否应该编写,然后在MyPage.java上执行RootPanel.get(“here”).add(html)?它似乎不起作用……事实上,如果我们更改文档的警报(“hello”)。write(“hello”)则上述代码不起作用。我猜它与RootPanel.get().add(html)…有关。问题是document.write(),它将文档作为一个整体写入。如果您想将javascript生成的文本插入文档中的某些位置,我建议使用innerHTML。每个HTML元素都有一个innerHTML属性,该属性定义HTML代码和该元素的开始标记和结束标记之间出现的文本。下面是一个示例js:document.getElementById(“scriptContainer”).innerHTML=“Hello”;是的,您可以使用RootPanel.get(“id”).add(widget)在html页面中创建一个id为的div,并添加html面板或任何小部件;关于在html面板中使用js,我也遇到了同样的问题,所以遵循上面给出的解决方案,但我得到了一个onModuleLoad()执行-------------------------------------------原因是:com.google.gwt.core.client.JavaScriptException:(TypeError):对象[Object global]没有方法'appendChild'