Bagaimana saya dapat menggunakan javascript / jQuery / etc untuk mendeteksi jika Flash diinstal dan jika tidak, menampilkan div yang berisi informasi yang memberi tahu pengguna bahwa mereka perlu menginstal flash?
Bagaimana saya dapat menggunakan javascript / jQuery / etc untuk mendeteksi jika Flash diinstal dan jika tidak, menampilkan div yang berisi informasi yang memberi tahu pengguna bahwa mereka perlu menginstal flash?
Jawaban:
Gunakan swfobject. itu menggantikan div dengan flash jika sudah terpasang. lihat: http://code.google.com/p/swfobject/
Jika swfobject
tidak cukup, atau Anda perlu membuat sesuatu yang lebih dipesan lebih dahulu, coba ini:
var hasFlash = false;
try {
hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}
Ia bekerja dengan 7 dan 8.
Jawaban @ Drewid tidak berfungsi di Firefox 25 saya jika plugin flash hanya dinonaktifkan tetapi diinstal.
Komentar @ invertedSpear di jawaban itu berfungsi di firefox tetapi tidak di versi IE mana pun.
Jadi gabungkan kedua kode mereka dan dapatkan ini. Diuji di Google Chrome 31, Firefox 25, IE 8-10. Terima kasih Drewid dan invertedSpear :)
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;
}
}
Anda dapat menggunakan navigator.mimeTypes.
if (navigator.mimeTypes ["application/x-shockwave-flash"] == undefined)
$("#someDiv").show ();
jqplugin: http://code.google.com/p/jqplugin/
$.browser.flash == true
Anda juga harus bisa menggunakan ..
swfobject.getFlashPlayerVersion().major === 0
dengan swfobject-Plugin .
swfobject
tidak ditentukan.
Saya menggunakan kit deteksi Adobe, awalnya disarankan oleh justpassinby. Sistem mereka bagus karena mendeteksi nomor versi dan membandingkannya untuk Anda dengan 'versi yang diperlukan'
Satu hal yang buruk adalah ia melakukan peringatan yang menunjukkan versi flash yang terdeteksi, yang sangat tidak ramah pengguna. Tiba-tiba sebuah kotak muncul dengan beberapa nomor yang tampaknya acak.
Beberapa modifikasi yang mungkin ingin Anda pertimbangkan:
Versi yang sangat sangat kecil dari http://www.featureblend.com/javascript-flash-detection-library.html (hanya deteksi boolean flash)
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
}