0

当我们在移动应用程序中面临 GWT 性能问题时,我查看了 Google Wave 代码,因为它是使用 GWT 开发的。

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

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

谢谢。ps:谷歌也不会开源客户端代码。一直没能找到。

4

6 回答 6

8

您不必onclick在 HTML 上放置属性以使其具有 onclick 处理程序。这是一个非常简单的例子:

<div id="mydiv">Regular old div</div>

然后在脚本中:

document.getElementById('mydiv').onclick = function() { 
    alert('hello!');
}

他们不会直接设置 onclick 属性,它会在 GWT 代码中或通过另一个 Javascript 库设置。

于 2010-10-11T22:22:43.223 回答
2

GWT 文档展示了如何在 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()但是,在实践中,这与在页面中的现有元素上使用的结果相同。

于 2010-10-11T22:33:13.767 回答
1

onclick您可以使用 JavaScript将函数与事件挂钩。这是一个使用jQuery的示例:

$(document).ready(function(){
    $("#div-id").click(function(){
        /* Do something */
    });
});
于 2010-10-11T22:24:42.190 回答
1

如果您有兴趣围绕此优化性能,则可能需要根据您的情况调查事件委托。

于 2010-10-11T22:25:44.833 回答
1

为 Body 中的每个 DOM 元素生成一个点击事件。事件从正文向下传播到单击的元素(除非您使用的是 Internet Explorer),然后点击单击的元素,然后重新冒泡。可以通过 DOM 元素属性、javascript 中的事件处理程序或任何父级别的属性(冒泡或捕获事件触发此事件)来捕获事件。

于 2010-10-11T22:27:19.343 回答
0

我想他们只是将它设置在一个 .js 文件中。例如,使用 $(document).ready() 可以轻松完成 jQuery。

于 2010-10-11T22:21:07.593 回答