GWT:我可以在html页面中包含js还是需要`ScriptInjector`?

时间:2014-12-15 16:35:28

标签: javascript html gwt

我正在向我的GWT页面添加一个html文件,如下所示:

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

并且有效......但嵌入式脚本文件无法运行。我在Chrome的“元素”标签中看到了应该加载脚本的行,但显然不是(不会显示在“脚本”标签中,并且debugger行没有被点击。)

作为测试,我将html文件直接加载到我的浏览器中(不是通过GWT),脚本确实显示在Scripts选项卡中,它确实运行代码(所以这不是脚本标记本身的问题)

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

我是否必须使用ScriptInjector来完成这项工作(我有自己的问题,让它工作,这是另一个线程的主题)?如果是这样......为什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

通过将脚本添加到HTML窗口小部件并将其附加到页面来创建脚本将不起作用,浏览器不支持此操作。 GWT没有这样做,浏览器是,或者更确切地说,浏览器正在执行它,因为HTML小部件的工作方式。有关为何会出现这种情况的详细信息,请参阅https://stackoverflow.com/a/13392818/860630的详细解答。

还有其他几种方法可以做到这一点,但它们都归结为ScriptInjector已经在做的工作 - 如果ScriptInjector不适合你,其他选项似乎不太可能表现出来无论是。也许可以编辑您的问题以使用ScriptInjector并描述您的问题,或者用它来提出新问题?我看到ScriptInjector无效的唯一情况与$wnd或脚本附加到哪个页面有关(请参阅com.google.gwt.core.client.ScriptInjector#TOP_WINDOW)。