質問

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

                );

        }-*/;

私は上記を試みたが、モードを主催放火犯またはGWTに誤りがありません コンソール(私はコードが成功するか否かを知ることはできません)。私が知っている可能性があり、これはjQueryのトリガーを呼び出すための正しい方法は何ですか?私はバインドにアラートを()に置くときには(「接続」)は、それが呼び出されなかった。

.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;
    });
役に立ちましたか?

解決

GWTでのjQuery UIを使用していないとき、私は同様の問題を持っていた - コンソールは/ devモードでのエラーを、まだ私が望んでいたようなコードは動作しませんでした。しかし、GWTコード(つまり、またJSNIもの)はiframeを「クリーン」(ようがない外部から実行される - その理由は、jQueryの(そして、そのようなフレームワークが)/拡張するJavaScriptの多くのコア要素を変更し、それがそのように滞在することを期待ということでしたフレームワークすることができますあなたが$wndを介してメインウィンドウへの参照を持っている理由だ言語とし、GWTでいくつかの奇妙なエラーが原因混乱、)。

私は、ホスト・ページ(またはホストページにリンクされた外部JSファイル)にごdoConnect機能を移動することをお勧めしたいとだけではなく、あなたのJSNIスタブから、その関数を呼び出します:

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

それとも、彼らはjQueryの作られ、予期しているすべての変更が含まれるようにすることを、ホスト・ページから、など、配列を返しますヘルパー機能を提供します。

他のヒント

これは、この回答のために少し遅れだが、あなたの元のコードが原因単純なミスに仕事をしませんでした:あなたは代わりに$winの使い分けwindowを持っていますが、数文字後にあなたの代わりにdocument$doc使用しています)。

public static native void doConnect() /*-{
    $wnd.jQuery($doc).trigger($wnd.jQuery.Event('connect', {
        jid: 'sss',
        password: 'sss'
    }));
}-*/;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top