我第一次尝试使用GWT的ScriptInjector,想知道为什么当我查看页面源代码时,为什么不能在页面的任何地方看到注入(inject)的脚本作为标签。我希望它会显示在页面标题中。

我正在使用一个简单的示例,该示例可以显示警报。我只是想知道为什么我不能在页面中看到它。另外,如果我在脚本中声明了一个JavaScript变量,则该变量在全局范围内似乎不可用。

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

最佳答案

ScriptInjector的工作原理是将您的js代码段注入(inject)顶层窗口对象,并且默认情况下,在评估完之后立即将其删除(如果使用fromString();对于fromUrl(),默认情况下不会删除该元素)。这就是为什么您看不到它,但是它实际上会执行的原因。

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

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

09-12 11:54