سؤال

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

                );

        }-*/;

لقد جربت ما سبق ، ولكن لا يوجد خطأ في وحدة التحكم في وضع Firebug أو GWT المستضافة (لذلك لا يمكنني معرفة ما إذا كان الرمز هو النجاح أم لا). هل لي أن أعرف هل هذه هي الطريقة الصحيحة للاتصال بـ jQuery Trigger؟ ولكن عندما أضع تنبيهًا () في الربط ("الاتصال") ، لم يتم استدعاؤه

داخل ملف .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;
    });
هل كانت مفيدة؟

المحلول

واجهت مشكلات مماثلة عند استخدام jQuery UI مع GWT - لا توجد أخطاء في وضع وحدة التحكم/dev ، ومع ذلك فإن الكود لم يتصرف كما أردت. والسبب هو أن 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