Question

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

                );

        }-*/;

J'ai essayé ci-dessus, mais il n'y a pas d'erreur dans Firebug ou mode hébergé GWT console (donc je ne peux pas savoir si le code est le succès ou non). Puis-je savoir est-ce la bonne façon d'appeler déclencheur jquery? mais quand je mets alert () dans bind ( 'connecter'), il n'a pas été appelé

dans le fichier .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;
    });
Était-ce utile?

La solution

J'ai eu des problèmes similaires lors de l'utilisation de jQuery UI avec GWT - aucune erreur en mode console / dev, mais le code ne se comportera pas comme je voulais. La raison était que jQuery (et ces cadres) étendre / modifier de nombreux éléments de base de JavaScript et attendent de rester de cette façon - cependant, le code GWT (signification, aussi des choses JSNI) est exécuté à partir d'un iframe « propre » (de sorte que pas externe les cadres peuvent jouer avec la langue et provoquer des erreurs étranges dans GWT, c'est pourquoi vous devez faire référence à la fenêtre principale via $wnd).

Je vous suggère de déplacer votre fonction doConnect à la page d'accueil (ou d'un fichier js externe lié à la page d'accueil) et au lieu simplement appeler cette fonction de votre talon de JSNI:

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

Ou fournir des fonctions d'assistance qui renverront des tableaux, etc., à partir de la page d'accueil, afin qu'ils comprennent tous les changements que jQuery fait et attend.

Autres conseils

Il est un peu tard pour cette réponse, mais votre code d'origine ne fonctionnait pas en raison d'une simple erreur: Vous avez bien utilisé $win au lieu de window mais quelques caractères plus tard, vous avez utilisé document au lieu de $doc:)

public static native void doConnect() /*-{
    $wnd.jQuery($doc).trigger($wnd.jQuery.Event('connect', {
        jid: 'sss',
        password: 'sss'
    }));
}-*/;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top