كيف يمكنني اكتشاف ما إذا كان Flash مثبت وإذا لم يكن كذلك، فقم بعرض DIV مخفي يقوم بإبلاغ المستخدم؟

StackOverflow https://stackoverflow.com/questions/998245

سؤال

كيف يمكنني استخدام JavaScript / jQuery / etc للكشف عنها إذا تم تثبيت الفلاش وإذا لم يكن كذلك، فقم بعرض DIV يحتوي على معلومات لإبلاغ المستخدم بأنهم يحتاجون إلى تثبيت Flash؟

هل كانت مفيدة؟

المحلول

استخدام swfobject. يحل محل DIV مع الفلاش إذا تم تثبيته. يرى: http://code.google.com/p/swfobject/

نصائح أخرى

لو swfobject لن يكفي، أو تحتاج إلى إنشاء شيء أكثر تفصيلا بقليل، جرب هذا:

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

وهو يعمل مع 7 و 8.

@ إجابة drewid لم تنجح في فايرفوكس 25 إذا تم تعطيل البرنامج المساعد فلاش فقط ولكنه مثبت.

@ تعليق InvertedSpear في تلك الإجابة عملت في فايرفوكس ولكن ليس في أي إصدار أي.

حتى مجتمعة كل من الكود وحصلت على هذا. تم اختباره في Google Chrome 31، Firefox 25، أي 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;
  }
}

يمكنك استخدام Navigator.mimetypes.

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

Jqplugin: http://code.google.com/p/jqplugin/

$.browser.flash == true

يجب أن تكون قادرة أيضا على استخدام ..

swfobject.getFlashPlayerVersion().major === 0

مع ال swfobject- البرنامج المساعد.

لقد استخدمت مجموعة اكتشاف Adobe، التي اقترحها أصلا بواسطة Jourpassinby. نظامهم جميل لأنه يكتشف رقم الإصدار ويقارنه من أجلك ضد "الإصدار المطلوب"

شيء سيء هو أنه تنبيه يوضح الإصدار المكتشف من الفلاش، وهو أمر سهل الاستخدام للغاية. فجأة مربع ينبثق مع بعض الأرقام العشوائية على ما يبدو.

بعض التعديلات التي قد ترغب في النظر فيها:

  • إزالة التنبيه
  • قم بتغييره لذلك بإرجاع كائن (أو صفيف) --- العنصر الأول هو Boolean True / False for "كان الإصدار المطلوب الموجود على جهاز المستخدم" --- العنصر الثاني هو رقم الإصدار الفعلي الموجود على جهاز المستخدم

نسخة مصغر جدا جدا من 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  
        }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top