我正在向我的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来完成这项工作(我有自己的问题,让它工作,这是另一个线程的主题)?如果是这样......为什么?
感谢您的帮助!
答案 0 :(得分:1)
通过将脚本添加到HTML
窗口小部件并将其附加到页面来创建脚本将不起作用,浏览器不支持此操作。 GWT没有这样做,浏览器是,或者更确切地说,浏览器正在执行它,因为HTML
小部件的工作方式。有关为何会出现这种情况的详细信息,请参阅https://stackoverflow.com/a/13392818/860630的详细解答。
还有其他几种方法可以做到这一点,但它们都归结为ScriptInjector
已经在做的工作 - 如果ScriptInjector不适合你,其他选项似乎不太可能表现出来无论是。也许可以编辑您的问题以使用ScriptInjector
并描述您的问题,或者用它来提出新问题?我看到ScriptInjector
无效的唯一情况与$wnd
或脚本附加到哪个页面有关(请参阅com.google.gwt.core.client.ScriptInjector#TOP_WINDOW
)。