GWTのjqueryのトリガーを呼び出す方法?
-
22-09-2019 - |
質問
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'
}));
}-*/;