由于我们在移动应用程序中面临GWT性能问题,因此我使用GWT开发了Google Wave代码。
我认为那里的所有按钮都有小部件,但是如果你用firebug查看生成的HTML,你会发现在可点击的div上没有设置onclick属性。我想知道他们如何实现它有一个元素发出click或mousedown事件,看起来既不是一个小部件也不是注入onclick属性。
能够创建这样的组件肯定会让我更进一步优化性能。
感谢。 ps:还没有谷歌去开源客户端代码。一直无法找到它。
答案 0 :(得分:8)
您不必在HTML上放置onclick
属性,以使其具有onclick处理程序。这是一个非常简单的例子:
<div id="mydiv">Regular old div</div>
然后在脚本中:
document.getElementById('mydiv').onclick = function() {
alert('hello!');
}
他们不会直接设置onclick属性,它将在GWT代码中设置或通过另一个Javascript库设置。
答案 1 :(得分:2)
GWT documentation显示了如何在GWT Java应用程序中创建处理程序:
public void anonClickHandlerExample() {
Button b = new Button("Click Me");
b.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
// handle the click event
}
});
}
这将生成一个HTML元素并将单击处理程序绑定到它。但是,在实践中,这与在页面中的现有元素上使用document.getElementById('element').onclick()
具有相同的结果。
答案 2 :(得分:1)
您可以使用JavaScript将函数挂钩到onclick
事件。以下是使用jQuery的示例:
$(document).ready(function(){
$("#div-id").click(function(){
/* Do something */
});
});
答案 3 :(得分:1)
如果您对优化性能感兴趣,可能需要根据您的具体情况调查事件委派。
答案 4 :(得分:1)
为Body中的每个DOM元素生成一个click事件。事件从Body向下移动到单击的元素(除非您使用的是Internet Explorer),点击单击的元素,然后返回气泡。可以通过DOM元素属性,javascript中的事件处理程序或任何父级别的属性(冒泡或捕获事件触发此事件)捕获事件。
答案 5 :(得分:0)
我想他们只是将它设置在.js文件中。 例如,使用$(document).ready()轻松完成jQuery。