0

モバイル アプリで GWT のパフォーマンスの問題に直面しているため、GWT で開発されているため、Google Wave コードを調べました。

すべてのボタンにウィジェットがあると思いましたが、firebug で生成された HTML を調べると、クリック可能な div に onclick 属性が設定されていません。クリックまたはマウスダウンイベントを発行する要素を持ち、一見ウィジェットでもonclick属性が注入されていないように見える要素をどのように達成するのだろうか。

このようなコンポーネントを作成できれば、パフォーマンスの最適化に向けて一歩前進することは間違いありません。

ありがとう。ps: Google もクライアント コードをオープンソースにするつもりはありませんでした。それを見つけることができませんでした。

4

6 に答える 6

8

onclickonclick ハンドラーを持たせるために HTML に属性を配置する必要はありません。これは非常に簡単な例です:

<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

onclickJavaScript を使用して関数をイベントにフックできます。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 要素に対してクリック イベントが生成されます。イベントは、Body からクリックされた要素 (Internet Explorer を使用していない場合) に移動し、クリックされた要素に到達してからバブルアップします。イベントは、DOM 要素の属性、javascript のイベント ハンドラー、または任意の親レベルの属性を介してキャプチャできます (バブリング イベントまたはキャプチャ イベントがこれをトリガーします)。

于 2010-10-11T22:27:19.343 に答える
0

.js ファイルに設定しただけだと思います。たとえば、$(document).ready() を使用して jQuery を使用すると簡単に実行できます。

于 2010-10-11T22:21:07.593 に答える