Flash가 설치되어 있는지 여부를 어떻게 감지 할 수 있고 그렇지 않은 경우 사용자에게 알리는 숨겨진 DIV를 표시합니까?

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

문제

JavaScript/JQuery/etc를 사용하여 플래시가 설치되어 있는지 여부를 감지하고 그렇지 않은 경우 사용자에게 플래시를 설치해야한다는 정보가 포함 된 DIV를 표시 할 수 있습니까?

도움이 되었습니까?

해결책

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과 함께 작동합니다.

Flash 플러그인이 비활성화되었지만 설치된 경우 @Drewid의 답변은 내 Firefox 25에서 작동하지 않았습니다.

그 답변에 대한 @invertedspear의 의견은 Firefox에서 작동했지만 IE 버전에서는 그렇지 않았습니다.

그래서 그들의 코드를 모두 결합하고 이것을 얻었습니다. Google Chrome 31, Firefox 25, IE 8-10에서 테스트. 감사합니다 Drewid와 Bervertedspear :)

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-PLUGIN.

나는 원래 JustPassinby가 제안한 Adobe의 탐지 키트를 사용했습니다. 그들의 시스템은 버전 번호를 감지하고 '필요한 버전'과 비교하기 때문에 좋습니다.

한 가지 나쁜 점은 탐지 된 버전의 플래시 버전을 보여주는 경고를 수행하는데, 이는 사용자 친화적이지 않습니다. 갑자기 상자가 겉보기에 임의의 숫자로 나타납니다.

고려할 수있는 몇 가지 수정 사항 :

  • 경고를 제거하십시오
  • 객체 (또는 배열)를 반환하도록 변경 --- 첫 번째 요소는 부울 true/false입니다.

매우 조정 된 버전 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