Domanda

Per quanto ci troviamo di fronte problemi di prestazioni GWT in un app mobile Ho sbirciato in codice Google Wave in quanto è sviluppato con GWT.

ho pensato che tutti i pulsanti ci sono i widget, ma se si guarda in HTML generato con Firebug si vede alcun set di attributi onclick sul div cliccabili. Mi chiedo come raggiungerlo con un elemento che le questioni clic o eventi MouseDown e apparentemente non essendo un widget né iniettato con l'attributo onclick.

Essere in grado di creare tali componenti sarebbe sicuramente me fare un ulteriore passo avanti per ottimizzare le prestazioni.

Grazie. ps: wasnt google intenzione di codice client open source troppo. Non sono stati in grado di trovarlo.

È stato utile?

Soluzione

GWT come creare gestori all'interno di un GWT Java app:

public void anonClickHandlerExample() {
  Button b = new Button("Click Me");
  b.addClickHandler(new ClickHandler() {
    public void onClick(ClickEvent event) {
      // handle the click event
    }
  });
}

Questo genererà un elemento HTML e si legano un gestore di clic per esso. Tuttavia, in pratica questo ha lo stesso risultato utilizzando document.getElementById('element').onclick() su un elemento esistente nella vostra pagina.

Altri suggerimenti

Non c'è bisogno di mettere un attributo onclick sul codice HTML per renderlo avere un gestore onclick. Questo è un esempio molto semplice:

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

Poi nello script:

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

Non avrebbero impostare la proprietà Su clic direttamente, sarebbe stato fissato dal codice GWT o attraverso un altro libreria Javascript.

È possibile agganciare le funzioni per l'evento onclick utilizzando JavaScript. Ecco un esempio utilizzando jQuery :

$(document).ready(function(){
    $("#div-id").click(function(){
        /* Do something */
    });
});

Se siete interessati a ottimizzare le prestazioni intorno a questo, potrebbe essere necessario indagare delegazione evento, a seconda della situazione.

Un evento click viene generato per ogni elemento DOM all'interno del corpo. L'evento si sposta dal corpo verso il basso all'elemento cliccato (a meno che non si sta utilizzando Internet Explorer), colpisce l'elemento cliccato, e poi bolle back up. L'evento può essere catturato sia attraverso attributi DOM elemento, gestori di eventi in javascript, o attributi in uno dei livelli principali (le bolle o catturare trigger di evento questo).

Mi immagino che hanno appena impostato in un file .js. Fatto facilmente con dire jQuery con $ (document) .ready () per esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top