有没有人有一个脚本示例,它可以在 IE/Firefox 上可靠地工作,以检测浏览器是否能够显示嵌入式 Flash 内容。我说可靠是因为我知道这不可能 100% 的时间。
Javascript 中的跨浏览器 Flash 检测
IT技术
javascript
flash
cross-browser
                    2021-02-02 16:34:45
                
                    
                
            
        6个回答
            我同意Max Stewart 的观点。 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");
}
用您需要的任何最低 Flash 版本替换“9.0.115”。我选择 9.0.115 作为示例,因为这是添加了 h.264 支持的版本。
如果访问者没有flash,它会报告“0.0.0”的flash版本,所以如果你只是想知道他们是否有flash,请使用:
if(swfobject.hasFlashPlayerVersion("1"))
{
    alert("You have flash!");
}
else
{
    alert("You do not flash :-(");
}
SWFObject非常可靠。我已经使用它很长一段时间没有问题了。
我知道这是一个旧帖子,但我一直在寻找一段时间并没有找到任何东西。
我已经实现了JavaScript Flash 检测库。它工作得很好,并且记录在案以供快速使用。从字面上看,我花了 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>        
你可以使用闭包编译器来生成一个小的、跨浏览器的 flash 检测:
// ==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");
我用过的最低版本(不检查版本,只检查 Flash 插件):
var hasFlash = function() {
    return (typeof navigator.plugins == "undefined" || navigator.plugins.length == 0) ? !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) : navigator.plugins["Shockwave Flash"];
};
其它你可能感兴趣的问题