为什么我看不到使用GWT ScriptInjector注入的脚本?

时间:2014-04-07 17:39:17

标签: gwt

我第一次尝试使用GWT的ScriptInjector,并且想知道为什么当我查看页面源时,我无法在页面的任何位置看到注入的脚本作为标记。我希望它出现在页面头部。

我使用了一个简单的例子,它可以显示警报。我只是想知道为什么我无法在页面中注入它。此外,如果我在我的脚本中声明一个JavaScript变量,它在全局范围内似乎不可用。

ScriptInjector.fromString("window.alert('testing');")
.setWindow(ScriptInjector.TOP_WINDOW)
.inject();

2 个答案:

答案 0 :(得分:7)

ScriptInjector的工作方式是将js片段注入顶级窗口对象,默认情况下,在评估后将其删除(如果您使用fromString();使用fromUrl()元素默认情况下被删除)。这就是为什么你没有看到它,但实际上它已经执行了。

如果要保留注入的脚本元素,只需在构建器setRemoveTag(false)对象上使用FromString,即:

ScriptInjector.fromString("window.alert('testing');")
  .setRemoveTag(false)
  .setWindow(ScriptInjector.TOP_WINDOW)
  .inject();

答案 1 :(得分:0)

请看下面的样本。

我修改了div的内部HTML。这些更改在Firebug中可见,但如果您查看源,则不会出现此更改。

<强> EntryPointClass:

ScriptInjector.fromString("document.getElementById('mydiv').innerHTML='hi';")
            .setWindow(ScriptInjector.TOP_WINDOW).inject();

<强> HTML:

<html>
 ...
    <body>
        <div id='mydiv'></div>  
    </body>
 ...
</html>

<强>快照:

enter image description here

查看来源:

enter image description here