2009-07-24 5 views
6

मैं एक .aspx पृष्ठ विकसित कर रहा हूं जो उपयोगकर्ता को बटन पर क्लिक करने के बाद अंततः एक एप्लेट लॉन्च करेगा (मैं <applet> टैग का उपयोग कर रहा हूं)। इसलिए, मैं यह जानना चाहता हूं कि उपयोगकर्ता के ब्राउज़र पर जावा सक्षम/स्थापित है या नहीं।यह निर्धारित करें कि क्लाइंट ब्राउज़र ने जावा स्थापित किया है और एप्लेट लॉन्च कर सकता है

मैं navigator.javaEnabled() विधि का उपयोग कर रहा हूं। हालांकि, यह आईई 7 पर ठीक काम कर रहा है, फिर भी यह फ़ायरफ़ॉक्स 3.0.12 (विभिन्न ब्राउज़रों के बारे में नहीं पता) पर असंगत परिणाम लौटा रहा है, कभी-कभी कहता है कि जावा सक्षम है (जो यह है), और उसके बाद एप्लेट लॉन्च करने के बाद और इस पृष्ठ पर एप्लेट से फिर से वापस आना, यह झूठी रिपोर्ट करेगा। अगर मैं फ़ायरफ़ॉक्स बंद करता हूं और एप्लेट लॉन्चिंग पेज पर वापस आ जाता हूं, तो navigator.javaEnabled() फिर से सही (सही) रिपोर्ट करेगा।

क्या कोई ऐसी चीज है जो इस असंगत व्यवहार को निर्धारित कर रही है या Navigator.javaEnabled() जावा एप्लेट चेक करने का सबसे अच्छा तरीका नहीं है?

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

<applet src=".../yourapplet.jar" id="someId"> 

और अब कुछ सहायक समारोह

try { 
    var x = document.getElementById('someId').isRunning() 
    return x; 
} catch(e) { 
    return false; 
} 

क्यों इस काम करता है में इस कोड को लपेट:

उत्तर

10

अब एक एप्लेट बनाने के लिए एक विधि

public boolean isRunning() { return true; } 

अपने एप्लेट में करें? अगर एप्लेट चलाता है तो यह सच हो जाएगा। यदि एप्लेट नहीं चलाया जाता है या जावा समर्थित नहीं है तो आपको अपवाद मिलेगा, इसलिए आपको झूठा लगेगा।

+0

धन्यवाद मार्सिन काम करता है। हालांकि यदि संभव हो तो मैं परीक्षण के लिए एक एप्लेट चलाने की इच्छा नहीं रखूंगा। अगर मुझे कोई दूसरा समाधान नहीं मिल रहा है तो शायद मैं इस विधि का सहारा लेगा। जिस विधि का मैं उपयोग कर रहा हूं वह Google क्रोम पर भी ठीक काम कर रहा है, लेकिन जब मैं फ़ायरफ़ॉक्स के साथ एप्लेट खोलता हूं, तो उसे बंद करें और उसी पृष्ठ पर वापस आएं, navigator.javaEnabled झूठी वापसी शुरू कर देता है। बहुत अजीब! –

+0

जावा चलाने के लिए 100% निश्चित होने का एकमात्र तरीका जावा कोड को कॉल करना है। यदि आप नहीं चाहते हैं, तो उपयोगकर्ता को यह बहुत दृश्यमान बनाएं कि यदि एक्स सेकंड के भीतर कुछ नहीं होता है तो उन्हें जावा स्थापित करने की अधिक संभावना होती है। –

+0

@ मार्सिन, क्या यह सभी ब्राउज़रों + जेवीएम के लिए उपलब्ध है या यह ऐसा कुछ है जो केवल कुछ संयोजनों पर काम करता है? –

1

आप ऑब्जेक्ट टैग का उपयोग करने का भी प्रयास कर सकते हैं।

इसके साथ आप यह निर्धारित कर सकते हैं कि जावा का कौन सा संस्करण स्थापित है और यदि उपयोगकर्ता मौजूद नहीं है तो उपयोगकर्ता इसे डाउनलोड करने के लिए संकेत दें।

यह एक ऐप से लिया गया एक नमूना ऑब्जेक्ट टैग है जिसे मैं काम करता हूं, जेआरई जटिलताओं के लिए हमें अन्य अनुप्रयोगों के साथ संगतता के लिए 1.4.2_03 पर चलाने की आवश्यकता होती है।

<object classid="clsid:CAFEEFAC-0014-0002-0003-ABCDEFFEDCBA" id="MyApplet" 
name="MyApplet" width="4" height="4" 
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2_03-windows-i586.cab#Version=1,4,2,03"> 

ClassID निर्दिष्ट करता है आप लोड करना चाहते हैं जावा के संस्करण, आप एक विशिष्ट JRE, एक विशिष्ट परिवार अर्थात 1.4.x या नवीनतम संस्करण है जो कुछ भी करने के लिए इस सेट कर सकते हैं।

कोडबेस नियंत्रण जहां उपयोगकर्ता निर्देशित किया जाता है यदि वे क्लासिड को निर्धारित नहीं करते हैं।

ध्यान दें कि अगर ग्राहक के पास 1.5 या उच्चतर स्थापित है, तो आप सुरक्षा बाधाओं के कारण पुराने जेआरई का संदर्भ नहीं दे सकते हैं, तो आप इसे विंडोज़ में रजिस्ट्री सेटिंग के माध्यम से ओवरराइड कर सकते हैं लेकिन मैं इसकी अनुशंसा नहीं करता।

मुझे विश्वास है कि सुरक्षा स्थापित है ताकि आप केवल उसी परिवार में एक पुराने जेआरई का संदर्भ दे सकें। यानी उपयोगकर्ता के पास 1.6.0.10 है, आप 1.6.0.1 का संदर्भ दे सकते हैं लेकिन 1.5.एक्स में कुछ भी नहीं जा सकते हैं, हालांकि मुझे लगता है कि मुझे 1.6.0.11 के बाद एक सुरक्षा संवाद पॉप अप करना याद है, जहां पहले यह डिफ़ॉल्ट रूप से अनुरोध को अस्वीकार कर देगा।

0

मुझे लगता है कि इस lib सबसे व्यापक दस्तावेज और कार्यान्वयन है कि मैं मिल सकता है और जवाब के लिए बहुत अच्छी तरह से

http://www.pinlady.net/PluginDetect/Java/

संबंधित मुद्दे