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;
    });
有帮助吗?

解决方案

在控制台的/ dev模式没有错误,但是该代码没有表现得像我想 -

我当使用jQuery UI的使用GWT过类似的问题。其原因是,jQuery的(并且这样的框架)扩展/更改JavaScript的许多核心要素,并期望它保持这种方式 - 但是,GWT代码(意思,也JSNI的东西)从一个“干净”的iframe(所以没有外部执行框架可以乱用语言和事业GWT一些奇怪的错误,这就是为什么你必须参考通过$wnd主窗口)。

我建议将您的doConnect功能的主机页面(或链接到主页外部JS文件),而不是仅仅调用这个函数从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