Flash'ın yüklü olup olmadığını tespit etmek için javascript / jQuery / etc'yi nasıl kullanabilirim ve yüklü değilse, kullanıcıya flash yüklemesi gerektiğini bildiren bilgileri içeren bir div görüntüleyebilirim?
Flash'ın yüklü olup olmadığını tespit etmek için javascript / jQuery / etc'yi nasıl kullanabilirim ve yüklü değilse, kullanıcıya flash yüklemesi gerektiğini bildiren bilgileri içeren bir div görüntüleyebilirim?
Yanıtlar:
Swfobject kullanın. yüklü ise bir div'i flash ile değiştirir. bkz: http://code.google.com/p/swfobject/
swfobject
Yeterli olmazsa veya biraz daha ısmarlama bir şey yaratmanız gerekiyorsa, şunu deneyin:
var hasFlash = false;
try {
hasFlash = Boolean(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
} catch(exception) {
hasFlash = ('undefined' != typeof navigator.mimeTypes['application/x-shockwave-flash']);
}
7 ve 8 ile çalışır.
@ Drewid'in yanıtı Firefox 25'imde flash eklentisi devre dışı bırakılmış ancak yüklüyse işe yaramadı.
@ invertedSpear'ın bu yanıttaki yorumu firefox'ta çalıştı ancak herhangi bir IE sürümünde işe yaramadı.
Bu yüzden ikisinin de kodunu birleştirip bunu anladım. Google Chrome 31, Firefox 25, IE 8-10'da test edilmiştir. Teşekkürler Drewid ve ters çevrilmişSpear :)
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;
}
}
jqplugin: http://code.google.com/p/jqplugin/
$.browser.flash == true
Ayrıca kullanabilmeniz gerekir ..
swfobject.getFlashPlayerVersion().major === 0
ile swfobject-tapa .
swfobject
tanımsız.
Başlangıçta justpassinby tarafından önerilen Adobe'nin algılama kitini kullandım. Sistemleri güzel çünkü sürüm numarasını algılar ve sizin için 'gerekli sürümünüzle' karşılaştırır.
Kötü bir şey, flaşın algılanan sürümünü gösteren bir uyarı vermesidir, bu çok kullanıcı dostu değildir. Birdenbire rastgele görünen sayıların olduğu bir kutu açılır.
Dikkate almak isteyebileceğiniz bazı değişiklikler:
Http://www.featureblend.com/javascript-flash-detection-library.html'nin çok çok küçültülmüş versiyonu (yalnızca boole flaş algılama)
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
}