यदि फ्लैश स्थापित है और यदि नहीं, तो उपयोगकर्ता को सूचित करने वाली एक छिपी हुई डिव को प्रदर्शित कैसे कर सकता हूं?


88

फ्लैश स्थापित होने और अगर यह नहीं है, तो यह पता लगाने के लिए मैं जावास्क्रिप्ट / jQuery / आदि का उपयोग कैसे कर सकता हूं, एक डिव प्रदर्शित करें जिसमें उपयोगकर्ता को सूचित करने वाली जानकारी है कि उन्हें फ्लैश स्थापित करने की आवश्यकता है?

जवाबों:


26

Swfobject का उपयोग करें। यदि यह स्थापित है, तो यह फ़्लैश के साथ एक div को प्रतिस्थापित करता है। देखें: http://code.google.com/p/swfobject/


159

यदि swfobjectआप पर्याप्त नहीं होंगे, या आपको कुछ और बनाने की आवश्यकता होगी, तो यह प्रयास करें:

var hasFlash = false;
try {
    hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
    hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}

यह 7 और 8 के साथ काम करता है।


2
यह अच्छा काम करता है यदि आप बस यह पता लगाना चाहते हैं कि क्या यह स्थापित है और जरूरी नहीं कि किसी तरह से एक swf प्रदर्शित करें।
ctrlShiftBryan

10
इसे संशोधित करना था: var hasFlash = false; {var fo = (navigator.mimeTypes && navigator.mimeTypes ['application / x-shockwave-flash']] आज़माएँ? navigator.mimeTypes ['एप्लीकेशन / एक्स-शॉकवेव-फ्लैश']। enablePlugin: 0; if (fo) hasFlash = true; } catch (e) {if (navigator.mimeTypes ['application / x-shockwave-flash']]! = अपरिभाषित) hasFlash = true; } "
उल्टास्पर्श

1
IE7 पर यह काम नहीं करेगा, क्योंकि आप सक्रिय भाग
केविन

1
संपूर्ण लाइब्रेरी का उपयोग करने के बजाय जावास्क्रिप्ट की 5 लाइनों का उपयोग करने के लिए upvote
एलेक्स डब्ल्यू

यह एंड्रॉइड मोबाइल ब्राउज़र जैसे फ़ायरफ़ॉक्स और क्रोम के लिए काम करेगा?
मणिप्रकाश चिन्नास्वामी

105

@ ड्रूयड का जवाब मेरे फ़ायरफ़ॉक्स २५ में काम नहीं आया अगर फ्लैश प्लगइन सिर्फ निष्क्रिय है लेकिन स्थापित है

@ उस उत्तर में उलटी टिप्पणी ने फ़ायरफ़ॉक्स में काम किया लेकिन किसी भी IE संस्करण में नहीं।

इसलिए दोनों को अपने कोड को मिला दिया और यह प्राप्त किया। Google Chrome 31, Firefox 25, IE 8-10 में परीक्षण किया गया। धन्यवाद आकर्षित और उलटा :)

var hasFlash = false;
try {
  var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
  if (fo) {
    hasFlash = true;
  }
} catch (e) {
  if (navigator.mimeTypes
        && navigator.mimeTypes['application/x-shockwave-flash'] != undefined
        && navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin) {
    hasFlash = true;
  }
}

1
ठोस जवाब। Thnx for the life saver :)
गोगोल

1
फ़ायरफ़ॉक्स 39 (2015-08-03) में काम करता है।
व्लादिमीर Vukanac

1
यह काम नहीं करता है अगर प्लगइन की अनुमति है, लेकिन फ्लैश उस वेबसाइट के लिए स्पष्ट रूप से अवरुद्ध है जिसे हम जांच रहे हैं। सफारी 8.0.8। इस मामले में हैफ्लैश अभी भी सच है (झूठी होनी चाहिए)।
यूजेनियो

बहुत अच्छा। धन्यवाद !
कोबी डॉक

1
छोटी और प्यारी
सोहेल फारुकी

18

आप navigator.mimeTypes का उपयोग कर सकते हैं।

if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
    $("#someDiv").show ();



2

मैंने एडोब की डिटेक्शन किट का इस्तेमाल किया, मूल रूप से जस्टपासिनबी ने सुझाव दिया। उनका सिस्टम अच्छा है क्योंकि यह संस्करण संख्या का पता लगाता है और आपके लिए आपके 'आवश्यक संस्करण' की तुलना करता है

एक बुरी बात यह है कि यह फ्लैश के पता किए गए संस्करण को दर्शाने वाला एक अलर्ट है, जो बहुत उपयोगकर्ता के अनुकूल नहीं है। अचानक एक बॉक्स कुछ प्रतीत होता है यादृच्छिक संख्या के साथ पॉप अप।

कुछ संशोधनों पर विचार करना चाहते हैं:

  • अलर्ट निकालें
  • इसे बदलें ताकि यह एक वस्तु (या सरणी) लौटाता है --- पहला तत्व बूलियन सच है या गलत है "उपयोगकर्ता की मशीन पर पाया गया आवश्यक संस्करण था" --- दूसरा तत्व उपयोगकर्ता की मशीन पर पाया गया वास्तविक संस्करण संख्या है

1

Http://www.featureblend.com/javascript-flash-detection-library.html (केवल बूलियन फ्लैश डिटेक्शन) का बहुत ही छोटा संस्करण

var isFlashInstalled = (function(){
var b=new function(){var n=this;n.c=!1;var a="ShockwaveFlash.ShockwaveFlash",r=[{name:a+".7",version:function(n){return e(n)}},{name:a+".6",version:function(n){var a="6,0,21";try{n.AllowScriptAccess="always",a=e(n)}catch(r){}return a}},{name:a,version:function(n){return e(n)}}],e=function(n){var a=-1;try{a=n.GetVariable("$version")}catch(r){}return a},i=function(n){var a=-1;try{a=new ActiveXObject(n)}catch(r){a={activeXError:!0}}return a};n.b=function(){if(navigator.plugins&&navigator.plugins.length>0){var a="application/x-shockwave-flash",e=navigator.mimeTypes;e&&e[a]&&e[a].enabledPlugin&&e[a].enabledPlugin.description&&(n.c=!0)}else if(-1==navigator.appVersion.indexOf("Mac")&&window.execScript)for(var t=-1,c=0;c<r.length&&-1==t;c++){var o=i(r[c].name);o.activeXError||(n.c=!0)}}()};  
return b.c;
    })();

if(isFlashInstalled){
    // Do something with flash
    }else{
    // Don't use flash  
        }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.