我第一次尝试使用GWT的ScriptInjector,并且想知道为什么当我查看页面源时,我无法在页面的任何位置看到注入的脚本作为标记。我希望它出现在页面头部。
我使用了一个简单的例子,它可以显示警报。我只是想知道为什么我无法在页面中注入它。此外,如果我在我的脚本中声明一个JavaScript变量,它在全局范围内似乎不可用。
ScriptInjector.fromString("window.alert('testing');")
.setWindow(ScriptInjector.TOP_WINDOW)
.inject();
答案 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>
<强>快照:强>
查看来源: