检测flash构建版本

detect flash build verison

本文关键字:版本 构建 flash 检测      更新时间:2023-09-26

有人知道如何检测flash BUILD版本吗?

请注意这不是重复的。我问的不是玩家版本,而是构建版本。意思是最后3位数。也就是说,如果它是18.0.0.203 -那么我想要"203"。

谢谢!

flash.system.Capabilities.version提供了您需要的内容(内部构建号):

指定Flash Player或Adobe®AIR®平台和版本信息。版本号的格式为:platform majorVersion,minorVersion,buildNumber,internalBuildNumber.

var internal_build_number:int = flash.system.Capabilities.version.split(',')[3];
// gives : 203, for flash player 18.0.0.203
编辑:

要使用JavaScript获得Flash Player的确切版本,您可以使用flash.external.ExternalInterface(如何使用它在这里)将信息从Flash发送到JS。

如果你是一个ActionScript程序员(否则你可以从这里下载swf (1.24KB)),你可以这样写:

ActionScript 3:

// fn : the name of the js function which will get the flash version
//      this name is passed by flash vars
var fn:String = this.loaderInfo.parameters.fn || 'console.log',
    // WIN 18,0,0,203 => [18,0,0,203]
    version:Array = Capabilities.version.split(' ')[1].split(',');  
if(ExternalInterface.available){
    // call the js function and pass to it the flash player version
    ExternalInterface.call(fn, version);
}

HTML部分:

JS:

function echo(version){  
    // for : version = [18,0,0,203] 
    // gives : internal build number : 203
    console.log('internal build number : ' + version[3]);  
}
HTML:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
    <param name="movie" value="flash_to_js.swf" />
    <param name="flashvars" value="fn=echo" />
    <object type="application/x-shockwave-flash" data="flash_to_js.swf">
        <param name="flashvars" value="fn=echo" />
    </object>
</object>

希望能有所帮助。

似乎今天Adobe论坛上也出现了同样的问题。

    function showFlashBuildNumber(){
        var a = navigator.plugins;
        var dllfname;
        if (0 < a.length) {
           for (var d = "", b = 0, g = a.length; b < g; b++) if (-1 != a[b].name.toLowerCase().indexOf("flash")) {
           dllfname = a[b].filename;
          }
        }
         
        var parts = dllfname.replace(".dll", "").split("_");
        var buildnumber = parseInt(parts[4]);
        console.log(buildnumber);
    }

它可以在win7 & IE11和Firefox39上运行。
不能在Chrome上工作。可能是由内置播放器引起的…

如果你想获得构建号,而不是在JS端,但flash,它可以通过使用功能。版本和修剪。(这是akmozo的答案)

flashversionchecker.swf:

import flash.display.*;
import flash.external.*;
import flash.system.*;
public class fver extends Sprite {
    public function fver():void{
        super();
        do  {
        } while (ExternalInterface.available == false);
        try {
            flash_version_js();
        } catch(err:SecurityError) {
        } catch(err:Error) {
        };
    }
    public function flash_version_js():void{
        var flashPlayerVersion:String = Capabilities.version;
        var osArray:Array = flashPlayerVersion.split(" ");
        ExternalInterface.call("as_flashver", osArray[1]);
    }
}

HTML和javascript:

<script type="text/javascript" src="swfobject.2.2.js"></script>
<div style="visibility:hidden; display:inline;" id="flashdiv"></div>
<script type="text/javascript">  
        swfobject.embedSWF("flashversionchecker.swf", "flashdiv", "1", "1", "9.0.0");

            function frmt(sTT, z, s1) {
                var i = 3-z.length;
                sTT = sTT + z;
                while (i-->0) sTT=sTT+"&nbsp;";
                sTT = sTT + s1;
                return sTT;
            }
            var flash_version = "";
            function as_flashver(v) {
                var z = v.split(",");
                flash_version = z[0] + "." + z[1] + "." + z[2] + "." + z[3];

                console.log("Flash version (Full):" + flash_version);
                console.log("Build Flash version:" + z[3]);
        </script>