मेरे पास एक जावा एप्लेट चल रहा है जो ब्राउज़र में कुछ जावास्क्रिप्ट कार्यों को कॉल कर रहा है और परिणाम कार्यों से परिणाम की उम्मीद कर रहा है। यह निम्न कॉन्फ़िगरेशन के साथ काम कर रहा है:क्या जावा एप्लेट मैक ओएस पर फ़ायरफ़ॉक्स के भीतर जावास्क्रिप्ट के साथ संवाद करने में असमर्थ हैं?
- इंटरनेट एक्सप्लोरर
- Firefox/Windows
- सफारी/मैक
लेकिन यह मैक ओएस
के स्रोत पर Firefox के साथ काम नहीं कर रहा समस्या Win.eval कॉल लगता है जो हमेशा शून्य वापस आती है। मैं एक मैक ओएस एक्स 10.4.11
एक छोटा सा कोड पर Firefox 3.0.6 के साथ इस परीक्षण किया:
JSObject win = (JSObject) JSObject.getWindow(this);
Object exp = win.eval("testfunc()");
System.out.println("exp = " + exp.toString());
यह एक java.lang.NullPointerException (exp.toString()) बयान से चलाता है) । testfunc जावास्क्रिप्ट फ़ंक्शन बस सत्य देता है।
मैंने win.call के साथ प्रयास किया और एक ही परिणाम मिला।
मेरे एप्लेट टैग में मेस्क्रिप्ट और स्क्रिप्ट योग्य विशेषताएं शामिल हैं।
मुझे ट्रिस्टन का उत्तर धन्यवाद मिला। अपने समाधान का परीक्षण मैंने एक बहुत ही सरल परीक्षण बनाया जो अपराधी को खोजने के लिए काम कर सकता था और काम कर सकता था। मुझे यकीन था कि मैंने एक खाली testfunc() के साथ अपने परीक्षण किए हैं जो अभी सच साबित हुए हैं, लेकिन शायद मैंने ऐसा इसलिए नहीं किया क्योंकि उस मामले में यह काम करता है। वास्तविक समस्या यह थी कि फ़ंक्शन को एप्लेट की सार्वजनिक विधि कहा जाता था। फ़ायरफ़ॉक्स मैक में उस मामले को संभालने में सक्षम नहीं लगता है।
जावा वर्ग:
public class MyApplet extends Applet {
public int getMyValue() {
return 5;
}
public void somefunction() {
JSObject win = (JSObject) JSObject.getWindow(this);
Object exp = win.eval("jsfunc()");
System.out.println("exp = " + exp.toString());
}
}
और जावास्क्रिप्ट कोड:
मैं आपको एक उदाहरण देता हूँ क्योंकि jsfunc getMyValue कॉल
function jsfunc() {
var myApplet = document.getElementById("applet_id");
return myApplet.getMyValue() + 5;
}
exp somefunction में अशक्त हो जाएगा() एप्लेट की विधि। यदि आप एप्लेट के गुणों को सभी कॉल हटाते हैं तो आप शांत होते हैं।
मेरी समस्या को हल करने के लिए मैंने एप्पल के सभी मूल्यों को देने का फैसला किया जिसे मैंने अपने जावास्क्रिप्ट फ़ंक्शन के पैरामीटर के रूप में नियुक्त किया और अब मैं अच्छा हूं।
यदि जावास्क्रिप्ट एप्लेट की स्थिति बदलता है तो यह हमेशा मामला नहीं हो सकता है ... मैं भाग्यशाली था :)
फ़ंक्शन को कॉल करना समस्या नहीं है, परिणाम वापस प्राप्त करना है। डीबग स्टेटमेंट के साथ मैं स्पष्ट रूप से देख सकता हूं कि फ़ंक्शन निष्पादित किया गया है, लेकिन किसी भी तरह रिटर्न वैल्यू गुम हो जाता है और मुझे केवल "शून्य" मिलता है। –