【问题标题】:Why can't I see script injected using GWT ScriptInjector?为什么我看不到使用 GWT ScriptInjector 注入的脚本?
【发布时间】:2014-04-07 17:39:17
【问题描述】:

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

我正在使用一个非常简单的示例,它的工作原理是显示警报。我只是想知道为什么我看不到它在页面中注入。此外,如果我在脚本中声明一个 JavaScript 变量,它似乎在全局范围内不可用。

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

【问题讨论】:

  • 您刚刚分享了正在工作的内容。什么不工作?请分享代码。请看我的帖子。

标签: gwt


【解决方案1】:

ScriptInjector 通过将你的 js sn-p 注入顶层窗口对象来工作,默认情况下,在它被评估后立即将其删除(如果你使用 fromString(); 与 fromUrl() 元素是 默认情况下不会删除)。这就是为什么你看不到它,但它实际上执行了。

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

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

【讨论】:

  • 有趣,我不知道。尽管即使使用 fromUrl() 或 fromString() 和 .setRemoveTag(false),我仍然没有在页面源中看到注入的脚本元素。这个应用程序中发生了很多事情,所以这里可能发生了其他事情。我将尝试使用更简单的应用程序,看看是否可行。
  • 实际上,它确实适用于 setRemoveTag(false)。只是在页面上的各种其他内容之间错过了它。谢谢!
【解决方案2】:

请看下面的示例。

我修改了 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>

快照:

查看源代码:

【讨论】:

  • 感谢您的回复。我想我希望在页头中看到一个实际的
  • 实际上只是愚蠢,它确实有效。而且之前还愚蠢地不看萤火虫的html标签。
猜你喜欢
  • 2014-08-27
  • 2015-06-27
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多