2012-08-16 11 views
13

से .js फ़ाइल के जावास्क्रिप्ट फ़ंक्शन को कॉल करना मेरे पास जावा जीडब्ल्यूटी कोड में एक बटन है। और मेरे पास स्क्रिप्ट फ़ोल्डर में एक जावास्क्रिप्ट फ़ाइल है। मैं बटन क्लिक पर उस जेएस फ़ाइल के कार्यों तक पहुंचना चाहता हूं।जावा जीडब्ल्यूटी कोड

तो मैं जावा जीडब्ल्यूटी कोड (बटन के क्लिक इवेंट) से उस विधि को कैसे कॉल कर सकता हूं ..?

क्या कोई मुझे जेएस फ़ाइल के फ़ंक्शन तक पहुंचने के लिए कोड या तरीका बता सकता है।

अग्रिम में धन्यवाद।

+0

आईएमओ आपने कम से कम मानक लिंकर्स का उपयोग करके एक गैर-कामकाजी उत्तर चुना है, डेनियल एक बेहतर है। –

उत्तर

17

चूंकि आपका कोड gwt linker (और यह कोड कैसे लोड करता है) पर निर्भर नहीं होना चाहिए, आपको दाएं विंडो ऑब्जेक्ट के साथ कॉल को उपसर्ग करने की आवश्यकता है। रीप इसे ध्यान में नहीं लेता है। तो यह वास्तव में होना चाहिए:

public static native void onMyButtonClick() /*-{ 
    $wnd.myJSfunction(); 
}-*/; 
+0

यदि आप इस कोड में असामान्य टिप्पणी के बारे में सोच रहे हैं, या आपको '$ wnd' की आवश्यकता क्यों है, तो जीडब्ल्यूटी के [जावास्क्रिप्ट नेटिव इंटरफेस (जेएसएनआई) डॉक्स देखें] (http://www.gwtproject.org/doc/latest/ DevGuideCodingBasicsJSNI.html) अधिक जानकारी के लिए। –

6
  1. अपनी .html फ़ाइल में जेएस लिब आयात करें।
  2. इस तरह की एक विधि बनाएं:

    public static native void onMyButtonClick() /*-{ 
        myJSfunction(); 
    }-*/; 
    
  3. अपने बटन बाइंड इस तरह

    :

    myButton.addClickHandler(new ClickHandler() { 
    
        @Override 
        public void onClick(ClickEvent event) 
        { 
         onMyButtonClick(); 
        } 
    
    }); 
    
  4. हो गया!

बस सुनिश्चित करें कि आपके फ़ंक्शन वाले जावास्क्रिप्ट जेनरेट किए गए जीडब्ल्यूटी जावास्क्रिप्ट से पहले लोड हो गया है।

आपका स्वागत है!

+2

यह ग्लोबल विंडो ऑब्जेक्ट के बाद से कुछ लिंकर के साथ काम नहीं करेगा (जिसमें आप myJSfunction देख रहे हैं) शायद एक ही विंडो ऑब्जेक्ट नहीं हो सकता है। (gwt एक छिपे हुए iframe में कोड लोड कर सकते हैं ...) –

+0

धन्यवाद। यह काम कर रहा है। –