我将html文件添加到我的GWT页面,如下所示:

HTML htmlPanel = new HTML();
String html = MyHtml.INSTANCE.getHtml().getText();
htmlPanel.setHTML(html);
RootPanel.get().add(htmlPanel);


并且可以正常工作...但是嵌入式脚本文件无法运行。我在Chrome的“元素”标签中看到应加载脚本的行,但显然没有(在“脚本”标签中未显示,并且未点击debugger行)。

作为测试,我将html文件直接加载到浏览器中(而不是通过GWT),该脚本确实显示在“脚本”标签中,并且确实运行了代码(因此script标记本身不是问题)。

那么...为什么/如何在GWT嵌入脚本时不运行脚本? (如果尝试,我将不知道如何保持嵌入式脚本的运行!); o)

我是否必须使用ScriptInjector来完成这项工作(我在解决该问题时遇到了自己的问题,这是另一个线程的主题)?如果是这样,为什么?

谢谢你的帮助!

最佳答案

通过将脚本添加到HTML小部件并将其附加到页面来创建脚本将不起作用,浏览器不支持此功能。由于HTML小部件的工作方式,GWT没有这样做,或者浏览器正在这样做,或者浏览器正在这样做。有关为什么会发生这种情况的详细信息,请参见https://stackoverflow.com/a/13392818/860630中的详细解答。

您还有其他几种方法可以执行此操作,但是它们都可以归结为ScriptInjector已经在执行的工作-如果ScriptInjector对您不起作用,则其他选项似乎都不会起作用。也许编辑您的问题以使用ScriptInjector并描述您的问题,或者用它问一个新问题?我发现ScriptInjector不起作用的唯一情况与$wnd有关,或者与脚本附加到的页面有关(请参见com.google.gwt.core.client.ScriptInjector#TOP_WINDOW)。

10-06 10:52