Domanda

  public static native void doConnect() /*-{
            $wnd.jQuery(document).trigger('connect',
                    {
                    jid: 'sss',
                    password: 'sss'
                }

                );

        }-*/;

ho provato quanto sopra, ma non c'è nessun errore in Firebug o in modalità GWT ospitato console (quindi non posso sapere se il codice è successo o meno). Posso sapere è questo il modo corretto di chiamare grilletto jquery? ma quando ho messo alert () nella legatura ( 'connect'), non è stato chiamato

all'interno del file .js

    $(document).bind('connect', function (ev, data) { 
alert('not call.....at all');

        var conn = new Strophe.Connection(
            "http://bosh/xmpp-httpbind");

        conn.connect(data.jid, data.password, function (status) {
            if (status === Strophe.Status.CONNECTED) {
                $(document).trigger('connected');
            } else if (status === Strophe.Status.DISCONNECTED) {
                $(document).trigger('disconnected');
            }
        });

        Hello.connection = conn;
    });
È stato utile?

Soluzione

Ho avuto problemi simili quando si utilizza jQuery UI con GWT - nessun errore in modalità dev console /, ma il codice non si comportava come avrei voluto. La ragione era che jQuery (e tali quadri) si estendono / modificare molti elementi di base di JavaScript e si aspettano di rimanere in quel modo - tuttavia, il codice GWT (significato, anche roba JSNI) viene eseguito da un iframe "pulito" (in modo che nessun esterno quadri possono pasticciare con la lingua e causare alcuni errori strani in GWT, è per questo che si deve fare riferimento alla finestra principale via $wnd).

Io suggerirei di spostare la vostra funzione doConnect alla pagina host (o js esterno file collegato alla pagina host) e invece basta chiamare quella funzione dal vostro stub JSNI:

public static native void doConnect() /*-{
   $wnd._doConnect('sss','sss'); //_doConnect defined in the host page
}-*/;

O fornire funzioni di supporto che restituirà Array, ecc, dalla pagina host, in modo che essi comprendono tutti i cambiamenti che jQuery ha fatto e si aspetta.

Altri suggerimenti

E 'un po' tardi per questa risposta, ma il vostro codice originale non ha funzionato a causa di un semplice errore: Hai usato correttamente $win invece di window ma alcuni caratteri dopo aver utilizzato document invece di $doc:)

public static native void doConnect() /*-{
    $wnd.jQuery($doc).trigger($wnd.jQuery.Event('connect', {
        jid: 'sss',
        password: 'sss'
    }));
}-*/;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top