google wave:他们是如何使divs可点击的

时间:2010-10-11 22:18:51

标签: gwt google-wave gwt2

由于我们在移动应用程序中面临GWT性能问题,因此我使用GWT开发了Google Wave代码。

我认为那里的所有按钮都有小部件,但是如果你用firebug查看生成的HTML,你会发现在可点击的div上没有设置onclick属性。我想知道他们如何实现它有一个元素发出click或mousedown事件,看起来既不是一个小部件也不是注入onclick属性。

能够创建这样的组件肯定会让我更进一步优化性能。

感谢。 ps:还没有谷歌去开源客户端代码。一直无法找到它。

6 个答案:

答案 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。