我想在我的应用程序中执行JavaScript,这是用GWT编写的。 这是以常规HTML工作的代码:
<html>
<head>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<script src="jquery.js"></script>
<script src="jquery.roundabout.js"></script>
<script>
$(document).ready(function() {
$('ul').roundabout();
});
</script>
</body>
</html>
(假设jquery.js
和jquery.roundabout.js
位于同一文件夹中。)
我有somePresenter
(someView.java
和someView.ui.xml
),我希望上面的代码可以在someView.ui.xml
中使用。
我将上述代码复制粘贴到XML(<html>
代码除外{标有} <g:HTMLPanel>
但JavaScript似乎没有被执行(我看到的只是在脚本之前的列表)。
我怎样才能让它发挥作用?
相关问题:我可以使用GQuery来解决这个问题 (比如:GQuery。$()。getScript(jquery.roundabout.js)加载外部js脚本)?
提前致谢
答案 0 :(得分:7)
你不能在UiBinder中添加<script>
,并期望看到它被加载和执行的原因与你在<script>
中使用innerHTML
HTMLPanel
同样的表达式相同的原因(仅仅因为innerHTML
和UiBinder会在引擎盖下使用ScriptInjector.fromUrl(GWT.getModuleBaseURL() + 'jquery.js').inject();
。
如果您需要动态加载脚本,请查看ScriptInjector
:
ScriptInjector
我认为GQuery使用{{1}}或类似地工作。
答案 1 :(得分:0)
我最终设法通过
来做到这一点<script src="jquery.js"></script>
<script src="jquery.roundabout.js"></script>
project.html
中的然后在加载相关页面时(我的演示者)执行与JSNI调用相关的JavaScript。