以下代码在我自己运行时工作正常,但是当我从项目中的小部件中运行它时,警报不会显示。我做错了什么或忘记做某事?
<html>
<head>
<title>Upload</title>
<script>
function test() {
alert("Works");
}
</script>
</head>
<body>
<input type='file' size='30' id='fileDiag' maxlength='45'
name='fileDiag'>
<input type="button" onclick="test()" value="TEST" />
</body>
</html>
答案 0 :(得分:1)
尝试使用以下内容替换窗口小部件HTML的内容:
<input type='file' size='30' id='fileDiag' maxlength='45' name='fileDiag'>
<input type="button" onclick="test()" value="TEST" />
<script>
function test() {
alert("Works");
}
</script>
您也不应该将JavaScript函数直接放在widget的html中。您可以使用UiBinder创建它并在UiBinder类中使用@UiHandler指定处理程序,或者创建一个扩展Composite的类,然后使用XTemplates,如下所示:
public interface WidgetTemplates extends XTemplates {
@XTemplate(source = "content.html")
SafeHtml content();
}
然后在您的小部件的构造函数中,您可以添加模板的内容:
WidgetTemplates templates = GWT.create(WidgetTemplates.class);
public class MyWidget extends Composite {
public MyWidget() {
HTMLPanel rootPanel = new HTMLPanel(templates.content());
initWidget(rootPanel);
sinkEvents(Event.ONCLICK);
}
public void onBrowserEvent(Event evt) {
// handler for all events
}
}
我没有完全测试上面的代码,但你可能会得到一般的想法。你想用GWT方式编码,而不是绕过它。