문제

누구나 IE/Firefox에서 안정적으로 잘 작동하여 브라우저가 임베디드 플래시 컨텐츠를 표시 할 수 있는지 감지 할 수있는 스크립트의 예가 있습니까? 나는 100%의 시간이 불가능하다는 것을 알고 있기 때문에 안정적으로 말한다.

도움이 되었습니까?

해결책

swfobject 매우 신뢰할 수 있습니다. 나는 꽤 오랫동안 문제없이 그것을 사용했습니다.

다른 팁

나는 동의한다 맥스 스튜어트. swfobject 갈 길입니다. 코드 예제로 그의 답변을 보충하고 싶습니다. 이것은 당신을 시작해야합니다.

당신이 포함했는지 확인하십시오 swfobject.js 파일을 얻으십시오 여기):

<script type="text/javascript" src="swfobject.js"></script>

그런 다음 그렇게 사용하십시오.

if(swfobject.hasFlashPlayerVersion("9.0.115"))
{
    alert("You have the minimum required flash version (or newer)");
}
else
{
    alert("You do not have the minimum required flash version");
}

"9.0.115"를 필요한 최소 플래시 버전으로 교체하십시오. H.264 지원을 추가 한 버전이기 때문에 9.0.115를 예제로 선택했습니다.

방문자에게 플래시가 없으면 플래시 버전의 "0.0.0"을보고하므로 플래시가 전혀 있는지 알고 싶다면 사용하십시오.

if(swfobject.hasFlashPlayerVersion("1"))
{
    alert("You have flash!");
}
else
{
    alert("You do not flash :-(");
}

나는 이것이 오래된 게시물이라는 것을 알고 있지만, 한동안 찾고 있었고 아무것도 찾지 못했습니다.
나는 그것을 구현했다 JavaScript 플래시 감지 라이브러리. 그것은 매우 잘 작동하며 빠른 사용을 위해 문서화되어 있습니다. 말 그대로 2 분이 걸렸습니다. 내가 헤더에 쓴 코드는 다음과 같습니다.

<script src="Scripts/flash_detect.js"></script>
<script type="text/javascript"> 
 if (!FlashDetect.installed) {
    alert("Flash is required to enjoy this site.");         
 } else {
    alert("Flash is installed on your Web browser.");
 }
</script>        

당신은 사용할 수 있습니다 클로저 컴파일러 작고 브라우저 크로스 브라우저 플래시 감지를 생성하려면 :

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print
// @use_closure_library true
// ==/ClosureCompiler==

// ADD YOUR CODE HERE
goog.require('goog.userAgent.flash');
if (goog.userAgent.flash.HAS_FLASH) {
    alert('flash version: '+goog.userAgent.flash.VERSION);
}else{
    alert('no flash found');
}

다음 "컴파일 된"코드가 발생합니다.

var a = !1,
    b = "";

function c(d) {
    d = d.match(/[\d]+/g);
    d.length = 3;
    return d.join(".")
}
if (navigator.plugins && navigator.plugins.length) {
    var e = navigator.plugins["Shockwave Flash"];
    e && (a = !0, e.description && (b = c(e.description)));
    navigator.plugins["Shockwave Flash 2.0"] && (a = !0, b = "2.0.0.11")
} else {
    if (navigator.mimeTypes && navigator.mimeTypes.length) {
        var f = navigator.mimeTypes["application/x-shockwave-flash"];
        (a = f && f.enabledPlugin) && (b = c(f.enabledPlugin.description))
    } else {
        try {
            var g = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"),
                a = !0,
                b = c(g.GetVariable("$version"))
        } catch (h) {
            try {
                g = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"), a = !0, b = "6.0.21"
            } catch (i) {
                try {
                    g = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), a = !0, b = c(g.GetVariable("$version"))
                } catch (j) {}
            }
        }
    }
}
var k = b;
a ? alert("flash version: " + k) : alert("no flash found");

내가 사용한 최소 버전 (버전을 확인하지 않고 플래시 플러그인 만) :

var hasFlash = function() {
    return (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
};

Carl Yestrau의 JavaScript Flash Detection Library, 여기 :

http://www.featureblend.com/javaScript-flash-detection-library.html

... 당신이 찾고있는 것일 수 있습니다.

아마도 Adobe의 Flash Player Detection Kit가 여기서 도움이 될 수 있습니까?

http://www.adobe.com/products/flashplayer/download/detection_kit/

웹 문서 내에서 플래시를 감지하고 포함시키는 것은 놀랍게도 어려운 작업입니다.

나는 SWFOBJECT와 Adobe의 솔루션에서 생성 된 품질 및 비표준 준수 마크 업에 매우 실망했습니다. 또한 내 테스트에서 Adobe의 자동 업데이터가 일관성이없고 신뢰할 수없는 것으로 나타났습니다.

JavaScript 플래시 감지 라이브러리 (플래시 감지) 그리고 JavaScript 플래시 HTML 발전기 라이브러리 (Flash TML) 읽기 쉽고 관리 가능하며 표준을 준수하는 마크 업 솔루션입니다.

-"루크는 소스를 읽었습니다!"

하나의 라이너 코드 isFlashExists 변하기 쉬운:

<script type='text/javascript'
    src='//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js'> </script>

<script type='text/javascript'>
   var isFlashExists = swfobject.hasFlashPlayerVersion('1') ? true : false ;
   if (isFlashExists) {
    alert ('flash exists');
   } else {
    alert ('NO flash');
   }
</script>

다음과 같은 대안이 있습니다. swfobject.getFlashPlayerVersion();

소스를보십시오 http://whatsmy.browsersize.com (14-120 행).

다음은 추상화 된 크로스 브라우저입니다 JSBIN에 코드 ~을 위한 플래시 감지 만, 작업 : FF/IE/SAFARI/OPERA/Chrome.

는 어때:

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

순수한 JavaScript 솔루션에 관심이 있다면 여기에 내가 복사 한 솔루션이 있습니다. 브렛:

function detectflash(){
    if (navigator.plugins != null && navigator.plugins.length > 0){
        return navigator.plugins["Shockwave Flash"] && true;
    }
    if(~navigator.userAgent.toLowerCase().indexOf("webtv")){
        return true;
    }
    if(~navigator.appVersion.indexOf("MSIE") && !~navigator.userAgent.indexOf("Opera")){
        try{
            return new ActiveXObject("ShockwaveFlash.ShockwaveFlash") && true;
        } catch(e){}
    }
    return false;
}

플래시가 활성화되어 있는지 확인하고 싶다면 충분해야합니다.

function testFlash() {

    var support = false;

    //IE only
    if("ActiveXObject" in window) {

        try{
            support = !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"));
        }catch(e){
            support = false;
        }

    //W3C, better support in legacy browser
    } else {

        support = !!navigator.mimeTypes['application/x-shockwave-flash'];

    }

    return support;

}

참고 : 확인을 피하십시오 enabledplugin, 일부 모바일 브라우저에는 탭으로 유효한 플래시 플러그인이 있으며 잘못된 음수가 트리거됩니다.

Flash Object StandArt Compliant (그러나 JavaScript와 함께)를 만들려면 살펴 보는 것이 좋습니다.

눈에 띄지 않는 플래시 객체 (UFO)

http://www.bobbyvandersluis.com/ufo/index.html

작은 것을 만들었습니다 .swf 어떤 리디렉션. 브라우저가 플래시가 활성화되면 리디렉션됩니다.

package com.play48.modules.standalone.util;

import flash.net.URLRequest;


class Redirect {


static function main() {

    flash.Lib.getURL(new URLRequest("http://play48.com/flash.html"), "_self");

}

}

Google Closure Compiler Goog.Require ( 'GOOG.USERAGENT.FLASH') 라이브러리를 사용 하여이 두 기능을 만들었습니다.

부울 hasflash ()

브라우저에 플래시가 있으면 반환합니다.

function hasFlash(){
    var b = !1;
    function c(a) {if (a = a.match(/[\d]+/g)) {a.length = 3;}}
    (function() {
    if (navigator.plugins && navigator.plugins.length) {
        var a = navigator.plugins["Shockwave Flash"];
        if (a && (b = !0, a.description)) {c(a.description);return;}
        if (navigator.plugins["Shockwave Flash 2.0"]) {b = !0;return;}
    }
    if (navigator.mimeTypes && navigator.mimeTypes.length && (a = navigator.mimeTypes["application/x-shockwave-flash"], b = !(!a || !a.enabledPlugin))) {c(a.enabledPlugin.description);return;}
    if ("undefined" != typeof ActiveXObject) {
        try {
            var d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");b = !0;c(d.GetVariable("$version"));return;
        } catch (e) {}
        try {
            d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");b = !0;
            return;
        } catch (e) {}
        try {
            d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), b = !0, c(d.GetVariable("$version"));
        } catch (e) {}
    }
    })();
    return b;
}

부울 isflashversion (버전)

플래시 버전이 제공된 버전보다 큰 경우 반환

function isFlashVersion(version) {
    var e = String.prototype.trim ? function(a) {return a.trim()} : function(a) {return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};
    function f(a, b) {return a < b ? -1 : a > b ? 1 : 0};
    var h = !1,l = "";
    function m(a) {a = a.match(/[\d]+/g);if (!a) {return ""}a.length = 3;return a.join(".")}
    (function() {
        if (navigator.plugins && navigator.plugins.length) {
            var a = navigator.plugins["Shockwave Flash"];
            if (a && (h = !0, a.description)) {l = m(a.description);return}
            if (navigator.plugins["Shockwave Flash 2.0"]) {h = !0;l = "2.0.0.11";return}
        }
        if (navigator.mimeTypes && navigator.mimeTypes.length && (a = navigator.mimeTypes["application/x-shockwave-flash"], h = !(!a || !a.enabledPlugin))) {l = m(a.enabledPlugin.description);return}
        if ("undefined" != typeof ActiveXObject) {
            try {
                var b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");h = !0;l = m(b.GetVariable("$version"));return
            } catch (g) {}
            try {
                b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");h = !0;l = "6.0.21";return
            } catch (g) {}
            try {
                b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), h = !0, l = m(b.GetVariable("$version"))
            } catch (g) {}
        }
    })();
    var n = l;
    return (function(a) {
        var b = 0,g = e(String(n)).split(".");
        a = e(String(a)).split(".");
        for (var p = Math.max(g.length, a.length), k = 0; 0 == b && k < p; k++) {
            var c = g[k] || "",d = a[k] || "";
            do {
                c = /(\d*)(\D*)(.*)/.exec(c) || ["", "", "", ""];d = /(\d*)(\D*)(.*)/.exec(d) || ["", "", "", ""];
                if (0 == c[0].length && 0 == d[0].length) {break}
                b = f(0 == c[1].length ? 0 : parseInt(c[1], 10), 0 == d[1].length ? 0 : parseInt(d[1], 10)) || f(0 == c[2].length, 0 == d[2].length) || f(c[2], d[2]);c = c[3];d = d[3]
            } while (0 == b);
        }
        return 0 <= b
    })(version)
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top