跨浏览器的Flash检测的Javascript跨浏览器的Flash检测的Javascript(Cro

2019-05-08 14:52发布

有没有人有脚本,可以在IE / Firefox的可靠工作以及检测浏览器是否能够显示嵌入式闪存内容的一个例子。 我说可靠,因为我知道它的时间不可能100%。

Answer 1:

SWFObject的是非常可靠的。 我已经用它不麻烦了好一阵子。



Answer 2:

我同意马克斯·斯图尔特 。 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”与任何你需要的最低Flash版本替换。 我选择了9.0.115作为一个例子,因为这是增加支持H.264版本。

如果访问者没有闪光灯,它会报告的“0.0.0”闪存版本,所以如果你只是想知道他们是否有闪光的全部,使用:

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


Answer 3:

我知道这是一个古老的职位,但我一直在寻找了一段时间,并没有发现任何东西。
我已经实现了JavaScript的Flash检测库 。 它的工作原理非常好,它是记录,以便快速使用。 只花了我两分钟。 下面是我在标题中写的代码:

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


Answer 4:

你可以使用封闭的编译器生成一个小的,跨浏览器的闪光检测:

// ==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");


Answer 5:

我曾经使用过(不检查版本,只是Flash插件)最低版本:

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


Answer 6:

卡尔Yestrau的JavaScript的Flash检测库,在这里:

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

...可能是你在找什么。



Answer 7:

也许Adobe的Flash播放器检测试剂盒,可帮助在这里?

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



Answer 8:

检测和Web文档中嵌入Flash是一个令人惊讶的艰巨的任务。

我感到非常失望与来自SWFObject的和Adobe的解决方案所产生的质量和不符合标准的标记。 此外,我的测试中发现Adobe的自动更新程序不一致和不可靠的。

JavaScript的Flash检测库(闪光检测)和JavaScript的HTML的Flash生成库(闪存TML)是一个清晰,维护和符合标准的标记解决方案。

- “卢克读取源!”



Answer 9:

规范一个衬垫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();



Answer 10:

查看在源http://whatsmy.browsersize.com (行14-120)。

这里是抽象的跨浏览器上jsbin代码 只闪光检测 ,适用于:FF / IE / Safari浏览器/歌剧/铬。



Answer 11:

关于什么:

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;
};


Answer 12:

如果你有兴趣在纯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;
}


Answer 13:

如果你只是想检查闪光灯是否开启,这应该是足够了。

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插件,并会引发假阴性。



Answer 14:

要创建一个Flash对象兼容非标准-(含但是JavaScript的),我建议你看一看

不显眼的闪光物体(UFO)

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



Answer 15:

已经创建了一个小.swf被重定向。 如果浏览器支持Flash会重定向。

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");

}

}


Answer 16:

使用谷歌关闭编译器goog.require(“goog.userAgent.flash”)库我创造了这个2层的功能。

布尔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(版本)

返回如果Flash版本高于提供更高版本

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)
}


文章来源: Cross Browser Flash Detection in Javascript