Pergunta

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

                );

        }-*/;

Eu tentei o acima, mas não há erro no console do modo hospedado do Firebug ou GWT (para que não saiba se o código é sucesso ou não). Posso saber que essa é a maneira correta de chamar o JQuery Trigger? Mas quando eu coloquei alert () em bind ('connect'), não foi chamado

arquivo .js interno

    $(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;
    });
Foi útil?

Solução

Eu tive problemas semelhantes ao usar a interface do usuário do JQuery com o GWT - nenhum erro no modo de console/dev, mas o código não se comportou como eu queria. O motivo foi que o jQuery (e essas estruturas) estendem/alteram muitos elementos centrais do JavaScript e esperam que ele permaneça assim - no entanto, o código GWT (significando também o material jsni) é executado a partir de um iframe "limpo" (para que nenhum externo As estruturas podem mexer com o idioma e causar alguns erros estranhos no GWT, é por isso que você precisa fazer referência à janela principal via $wnd).

Eu sugiro mover seu doConnect Função na página do host (ou arquivo JS externo vinculado à página do host) e, em vez disso, basta chamar essa função do seu JSNI Stub:

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

Ou forneça funções auxiliares que retorneão matrizes, etc., na página do host, para que incluam todas as alterações que o jQuery fez e espera.

Outras dicas

É um pouco tarde para esta resposta, mas seu código original não funcionou devido a um erro simples: você usou corretamente $win ao invés de window Mas alguns personagens depois você usou document ao invés de $doc :)

public static native void doConnect() /*-{
    $wnd.jQuery($doc).trigger($wnd.jQuery.Event('connect', {
        jid: 'sss',
        password: 'sss'
    }));
}-*/;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top