Avatar billede tblaster Nybegynder
30. december 2005 - 20:11 Der er 24 kommentarer og
1 løsning

Finde flash version

Er der nogen der kan hjælpe med en flash detektion til javascript, der kan returner den nøjagtige version af den flash player der er installeret. Den skal altså returner om brugeren har flash installeret, og hvis så skal den finde versionen.

Den nøjagtive version skal findes, ligesom følgende flash fil gør:
http://moock.org/asdg/technotes/echoVersion/echoVersion.swf

Jeg har søgt på såvel exp og google, men syntes ikke at kunne have fundet en løsning der giver den fulde version.
Avatar billede or.han Nybegynder
01. januar 2006 - 16:02 #1
Google finder en del sider:

http://www.google.dk/search?sourceid=navclient&hl=da&ie=UTF-8&rls=GGLG,GGLG:2005-39,GGLG:da&q=javascript+detect+flash+version
Avatar billede tblaster Nybegynder
01. januar 2006 - 17:16 #2
Som nævnt har jeg søgt rundt på de sider, og det bedste jeg kan finde er en javascript detektion der kan fortælle at jeg har version 8.0 installeret. Jeg skal gerne have at vide at jeg eks. har version 8.0.22.0 installeret.
Avatar billede or.han Nybegynder
01. januar 2006 - 18:21 #3
Du kan prøve at bruge dette script:

http://blog.deconcept.com/flashobject/#download
Avatar billede or.han Nybegynder
01. januar 2006 - 18:22 #4
Du kan prøve at kigge i scriptet og se hvordan det gøres. Jeg har ikke tid i dag, så kigger lige forbi imorgen.
Avatar billede or.han Nybegynder
01. januar 2006 - 18:42 #5
Jeg havde lige tid i overskud. Versionen findes sådan:

<script type="text/javascript">

window.onload = function(){
  var PlayerVersion;
    if(navigator.plugins && navigator.mimeTypes.length){
        var x = navigator.plugins["Shockwave Flash"];
        if(x && x.description) {
            PlayerVersion = x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".");
        }
    }else if (window.ActiveXObject){
      try {
        var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
          PlayerVersion = axo.GetVariable("$version").split(" ")[1].split(",");
      } catch (e) {}
    }
    alert(PlayerVersion);
}


</script>
Avatar billede tblaster Nybegynder
01. januar 2006 - 22:12 #6
Hvad returner den hvis der ikke er installeret flash? Hvis flash eks. ikke er installeret skal den eks. gerne returner false eller 0 eller sådan noget.
Avatar billede or.han Nybegynder
02. januar 2006 - 14:54 #7
Hvis du tildeler variablen en værdi fra start, vil den være lig med det, hvis det ikke er installeret:

var PlayerVersion = 0;

Så vil variablen være lig med 0, hvis flash ikke er installeret.
Avatar billede tblaster Nybegynder
02. januar 2006 - 15:42 #8
Jeg har problemer med at kæde det sammen med en detektion for java. Hvis du kan hjælpe med det vil jeg godt smidt 100 ekstra point i. Jeg har prøvet de 2 koder seperat og der virker de fint. Men når jeg samler det til en kode virker det ikke.

Her er min sides kode:
--------------------------------------------------------------------------

<!-- Checker om flash plugin'en er installeret -->
<script type="text/javascript">
  var flashVersion = 0;
    if(navigator.plugins && navigator.mimeTypes.length){
        var x = navigator.plugins["Shockwave Flash"];
        if(x && x.description) {
            flashVersion = x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".");
        }
    }else if (window.ActiveXObject){
      try {
        var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
          flashVersion = axo.GetVariable("$version").split(" ")[1].split(",");
      } catch (e) {}
    }
</script>

<!-- Checker om java plugin'en er installeret -->
<OBJECT id=myApplet height=1 width=1 classid=clsid:8AD9C840-044E-11D1-B3E9-00805F499D93><PARAM NAME="CODE" VALUE="DetectPluginApplet.class">
    <PARAM NAME="mayscript" VALUE="true">
    <PARAM NAME="scriptable" VALUE="true">
    <embed type="application/x-java-applet;version=1.3" code="DetectPluginApplet" width="1" height="1" mayscript="true" scriptable="true">
    </embed>
</OBJECT>
<SCRIPT src="javaversion.js" type=text/javascript>
    var javaVersion = checkJavaPlugin(false);
</SCRIPT>

<!-- Udskriver en information til brugeren hvis ikke flash og java pluginen er installeret -->
<script type="text/javascript">
    alert(javaVersion);
    alert(flashVersion);
    if (flashVersion == 0)
    {
        document.write('<td align=center><%= Replace(Replace(TabelTop, "'", "\'"), "100%", "80%") %><br><SPAN class=brod><center><b>Plugins:</b><br>');
        document.write('<SPAN class=brod>Du har ikke Flash installeret i din browser. <a href=http://www.macromedia.com/go/getflashplayer/ target=_new><b>Tryk her</b></a> for at hente den.');
       
        if(javaVersion == 0)
        {
            document.write('<SPAN class=brod>Du har ikke Java installeret i din browser. <a href=http://www.java.com/en/download/windows_automatic.jsp target=_new><b>Tryk her</b></a> for at hente den.</center><br><%= Replace(TabelBund, "'", "\'") %></td></TR><TR><TD><br></TD></TR><TR>');
        }
        else
        {
            document.write('</center><br><%= Replace(TabelBund, "'", "\'") %></td></TR><TR><TD><br></TD></TR><TR>')
        }
    }
    else
    {
        if(javaVersion == 0)
        {
            document.write('<td align=center><%= Replace(Replace(TabelTop, "'", "\'"), "100%", "80%") %><br><SPAN class=brod><center><b>Plugins:</b><br>');
            document.write('<SPAN class=brod>Du har ikke Java installeret i din browser. <a href=http://www.java.com/en/download/windows_automatic.jsp target=_new><b>Tryk her</b></a> for at hente den.</center><br><%= Replace(TabelBund, "'", "\'") %></td></TR><TR><TD><br></TD></TR><TR>');                       
        }
        else
        {
        }
    }
</script>


<!-- Retter i versions informationerne for at kunne udskrive et pænt format -->
<SCRIPT type=text/javascript>
    javaVersion     = javaVersion.replace("_", " R");
    javaVersion     = javaVersion.replace("false", "Ikke fundet");
    flashVersion    = flashVersion.replace(",",".");
    flashVersion    = flashVersion.replace("false","Ikke fundet");
</SCRIPT>
<% Response.write "<br><center><SPAN class=brod>Flash version: <Script>document.write(flashVersion)</SCRIPT> | Java version: <Script>document.write(javaVersion)</SCRIPT>]</center>" %>
--------------------------------------------------------------------------

javaversion.js :
--------------------------------------------------------------------------
var browsername;

function doNetscapeJava() {
    var java=new Object();
    java.installed=navigator.javaEnabled() ? true:false;
    java.version='0.0';

    if (java.installed == false)
        return false;

    var numPlugs=navigator.plugins.length;
    if (numPlugs) {
        for (var x=0; x<numPlugs; x++) {
            var pluginjava = navigator.plugins[x];

            if (pluginjava.name.toLowerCase().indexOf('java plug-in') != -1) {
                java.version=pluginjava.description.toLowerCase().split('java plug-in ')[1].split(' for')[0];
                //alert("Java version"+ java.version);
                return java.version;
            }
        }
    }
    return false;
}

function doMicrosoft() {
    var applet = document.myApplet;
    if(applet == null) {
        //return("No Java support detected.\nPlease install Java plug-in.");
        return(false);
    };

    var version = applet.getJavaVersion();
    /*
    if(version == "1.3.0") {
        return("Java Plugin 1.3.0 installed");
    }
    else {
        return("Java version: " + version);
    };
    */
    return (version);
}

function checkJavaPlugin(showAlert) {
    browsername = navigator.appName;
    var version;
    if(browsername.indexOf("Netscape")!= -1) {
        browsername="NS";
        //doNetscape();
        var version = doNetscapeJava();
        if (showAlert == true) {
            if (version == false)
                alert("No Java Plug-in detected.");
            else
                alert("Java Plug-in version " + version);
        }
        else {
            if (version.indexOf("undefined") != -1) {
                version = "0";
                return (version);
            }
            return (version);
        }
    }
    else {
        if(browsername.indexOf("Microsoft")!=-1) {
            version = doMicrosoft();
        }
        else {
            version = doMicrosoft(); // trying this even if not IE
            if (version == false) {
                version = "0";                
            }
        }
        if (showAlert == true) {
            if (version == false)
                alert("0");
            else
                alert("Java Plug-in version " + version);
        }
        else return (version);
    };
}
--------------------------------------------------------------------------

DetectPluginApplet.class kan hentes her:
http://www.arto.dk/chat/javaDetect/DetectPluginApplet.class

Når jeg åbner siden, får jeg ingen alerts. Det er altså som om at jeg ikke få kørt den midterste del af koden. Men jeg får udskrevet flash versionen nederst men ikke java.

Desuden får jeg udskrevet flash versionen som  8,0,22,0 og ikke 8.0.22.0 som jeg beder om.

Jeg vil måske tro at det har noget at gøre med indholdet af de 2 variable. For indsætter jeg følgende over mine alerts, så ser det ud til at koden virker fint nok:
    javaVersion = 2;
    flashVersion = 8;

Kan du hjælpe med at få koden rettet til?
Avatar billede or.han Nybegynder
03. januar 2006 - 11:59 #9
Tester du også i Mozilla? Den plejer at være god til at finde fejl i scripts...
Avatar billede or.han Nybegynder
03. januar 2006 - 12:01 #10
Øøh du har vel lavet nogle eventshandlere, ik? Ellers sker der jo intet..
Avatar billede tblaster Nybegynder
03. januar 2006 - 12:13 #11
Pt. tester jeg kun koden i IE. Eventshandlere? Er ikke lige med på hvad du snakker om. Det jeg har postet er hele den kode jeg tester.
Avatar billede or.han Nybegynder
03. januar 2006 - 12:39 #12
Scriptet skal jo afvikles på et tidspunkt, og hvis du vil have at den skal gøre det når siden er hentet, skal man bruge onload-eventet.

Så du bør samle hele koden i en funktion og i body skriver du så flg:

<body onload="denSamledeFunktionsNavn()">
Avatar billede tblaster Nybegynder
03. januar 2006 - 12:43 #13
Den del der står under <!-- Udskriver en information til brugeren hvis ikke flash og java pluginen er installeret --> er ikke en funktion. Den skulle da derfor gerne automatisk køres når siden er loadet, så samme måde som følgende automatisk bliver kørt:
<Script>
alert('Test');
</Script>
Avatar billede or.han Nybegynder
03. januar 2006 - 21:08 #14
Nåh okay troede at koden var i head... hvis det er i body, så er det ik det, som er fejlen..
Avatar billede tblaster Nybegynder
03. januar 2006 - 21:14 #15
Nej, den står i min body. Kan du gemmenskue hvad det ellers er? Eller hvis du kan samle de 2 seperate funktioner så de virker samlet, så ville det være super!
Avatar billede or.han Nybegynder
03. januar 2006 - 21:34 #16
Er ikke sikker, men prøv det her:

<!-- Checker om flash plugin'en er installeret -->
<script type="text/javascript">
// FlashTJEK
  var flashVersion = 0;
  function flashChecker(){
    if(navigator.plugins && navigator.mimeTypes.length){
        var x = navigator.plugins["Shockwave Flash"];
        if(x && x.description) {
            flashVersion = x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".");
        }
    }else if (window.ActiveXObject){
      try {
        var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
          flashVersion = axo.GetVariable("$version").split(" ")[1].split(",");
      } catch (e) {}
    }
  }
 
// JavaTJEK
var javaVersion = 0;
var browsername;
function doNetscapeJava() {
    var java = new Object();
    java.installed = navigator.javaEnabled() ? true:false;
    java.version = '0.0';

    if (java.installed == false)
        return false;

    var numPlugs=navigator.plugins.length;
    if (numPlugs) {
        for (var x=0; x<numPlugs; x++) {
            var pluginjava = navigator.plugins[x];

            if (pluginjava.name.toLowerCase().indexOf('java plug-in') != -1) {
                java.version=pluginjava.description.toLowerCase().split('java plug-in ')[1].split(' for')[0];
                //alert("Java version"+ java.version);
                return java.version;
            }
        }
    }
    return false;
}

function doMicrosoft() {
    var applet = document.myApplet;
    if(applet == null) {
        //return("No Java support detected.\nPlease install Java plug-in.");
        return(false);
    };

    var version = applet.getJavaVersion();
    /*
    if(version == "1.3.0") {
        return("Java Plugin 1.3.0 installed");
    }
    else {
        return("Java version: " + version);
    };
    */
    return (version);
}

function checkJavaPlugin(showAlert) {
    browsername = navigator.appName;
    var version;
    if(browsername.indexOf("Netscape")!= -1) {
        browsername="NS";
        //doNetscape();
        var version = doNetscapeJava();
        if (showAlert == true) {
            if (version == false)
                alert("No Java Plug-in detected.");
            else
                alert("Java Plug-in version " + version);
        }
        else {
            if (version.indexOf("undefined") != -1) {
                version = "0";
                return (version);
            }
            return (version);
        }
    }
    else {
        if(browsername.indexOf("Microsoft")!=-1) {
            version = doMicrosoft();
        }
        else {
            version = doMicrosoft(); // trying this even if not IE
            if (version == false) {
                version = "0";               
            }
        }
        if (showAlert == true) {
            if (version == false)
                alert("0");
            else
                alert("Java Plug-in version " + version);
        }
        else return (version);
    };
}
</script>

<!-- Checker om java plugin'en er installeret -->
<OBJECT id=myApplet height=1 width=1 classid=clsid:8AD9C840-044E-11D1-B3E9-00805F499D93><PARAM NAME="CODE" VALUE="DetectPluginApplet.class">
    <PARAM NAME="mayscript" VALUE="true">
    <PARAM NAME="scriptable" VALUE="true">
    <embed type="application/x-java-applet;version=1.3" code="DetectPluginApplet" width="1" height="1" mayscript="true" scriptable="true">
    </embed>
</OBJECT>

<!-- Udskriver en information til brugeren hvis ikke flash og java pluginen er installeret -->
<script type="text/javascript">
    var javaVersion = checkJavaPlugin(false);
    alert(javaVersion);
    alert(flashVersion);
    if (flashVersion == 0) {
        document.write('<td align=center><%= Replace(Replace(TabelTop, "'", "\'"), "100%", "80%") %><br><SPAN class=brod><center><b>Plugins:</b><br>');
        document.write('<SPAN class=brod>Du har ikke Flash installeret i din browser. <a href=http://www.macromedia.com/go/getflashplayer/ target=_new><b>Tryk her</b></a> for at hente den.');
        if(javaVersion == 0) {
            document.write('<SPAN class=brod>Du har ikke Java installeret i din browser. <a href=http://www.java.com/en/download/windows_automatic.jsp target=_new><b>Tryk her</b></a> for at hente den.</center><br><%= Replace(TabelBund, "'", "\'") %></td></TR><TR><TD><br></TD></TR><TR>');
        } else {
        document.write('</center><br><%= Replace(TabelBund, "'", "\'") %></td></TR><TR><TD><br></TD></TR><TR>')
        }
    } else {
        if(javaVersion == 0) {
            document.write('<td align=center><%= Replace(Replace(TabelTop, "'", "\'"), "100%", "80%") %><br><SPAN class=brod><center><b>Plugins:</b><br>');
            document.write('<SPAN class=brod>Du har ikke Java installeret i din browser. <a href=http://www.java.com/en/download/windows_automatic.jsp target=_new><b>Tryk her</b></a> for at hente den.</center><br><%= Replace(TabelBund, "'", "\'") %></td></TR><TR><TD><br></TD></TR><TR>');                       
        }
    }

// Retter i versions informationerne for at kunne udskrive et pænt format
javaVersion    = javaVersion.replace("_", " R");
javaVersion    = javaVersion.replace("false", "Ikke fundet");
flashVersion    = flashVersion.replace(",",".");
flashVersion    = flashVersion.replace("false","Ikke fundet");

</script>

<%
Response.write "<br><center><SPAN class=\"brod\">Flash version: <script>document.write(flashVersion)</script> | Java version: <script>document.write(javaVersion)</script></center>"
%>
Avatar billede tblaster Nybegynder
03. januar 2006 - 21:40 #17
Nu giver den mig en java version, men mht. flash versionen får jeg et 0 hvilket er forkert.
Avatar billede tblaster Nybegynder
03. januar 2006 - 21:43 #18
Min fejl, jeg havde ikke lige set at du havde lavet flash versions undersøgeren om til en funktion. Men selv hvis jeg tilføjer følgende:
var flashVersion = flashChecker();

Lige over:
var javaVersion = checkJavaPlugin(false);

Så får jeg "undefined" ud som værdi i javaVersion.
Avatar billede tblaster Nybegynder
03. januar 2006 - 22:08 #19
Tror jeg fik det rettet. Skulle lige bede funktionen give versionen som retur. Så det ser nu ud til at virke. Det eneste jeg dog stadig har problemer med, er den aller sidste del:

flashVersion    = flashVersion.replace(",",".");
flashVersion    = flashVersion.replace("false","Ikke fundet");

Lige nu kommer min flash version ud som:
8,0,22,0

Jeg vil gerne have dette rettet til:
8.0.22.0

Jeg tror måske det har noget med formatet som gemmes i flashVersion for hvis jeg smider et par alerts på som følgende:
javaVersion    = javaVersion.replace("_", " R");
alert('1');
javaVersion    = javaVersion.replace("false", "Ikke fundet");
alert('2');
flashVersion    = flashVersion.replace(",",".");
alert('3');
flashVersion    = flashVersion.replace("false","Ikke fundet");
alert('4');

Så får jeg kun 2 alerts. En først med tallet 1 og så en med tallet 2. Håber du kan bruge den information til at hjælpe med at rette det sidste til.
Avatar billede or.han Nybegynder
04. januar 2006 - 14:40 #20
For at erstatte alle kommaer må du gøre flg:

flashVersion    = flashVersion.replace(/,/g,'.');

Og det er egentlig forkert at du siger at false, skal erstattes med "Ikke fundet", for så vil variablen jo være lig med 0. Så laver du bare en if sætning:

if ( flashVersion == 0 ){
  flashVersion = "Ikke fundet";
} else {
  flashVersion = flashVersion.replace(/,/g,'.');
}

Det burde også virke sådan her:

flashVersion = ( flashVersion == 0 ) ? "Ikke fundet" : flashVersion.replace(/,/g,'.');


Virker det stadigvæk ikke?
Avatar billede tblaster Nybegynder
04. januar 2006 - 14:48 #21
Nope, det hjalp ikke. Den udskriver det stadig som 8,0,22,0
Avatar billede or.han Nybegynder
04. januar 2006 - 15:06 #22
Nåh det er jo klart, når flashVersion jo er en array.

Ændr flg:

flashVersion = x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".");

til

flashVersion = (x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".")).join(".");

Ændr:

flashVersion = axo.GetVariable("$version").split(" ")[1].split(",");

til

flashVersion = (axo.GetVariable("$version").split(" ")[1].split(",")).join(".");


Og ændr:

flashVersion = ( flashVersion == 0 ) ? "Ikke fundet" : flashVersion.replace(/,/g,'.');

til

flashVersion = ( flashVersion == 0 ) ? "Ikke fundet" : flashVersion;
Avatar billede tblaster Nybegynder
04. januar 2006 - 19:58 #23
Det hjalp. Jeg vil lige få testet det igennem på en række forskellige systemet og se om der er nogen fejl.
Avatar billede tblaster Nybegynder
05. januar 2006 - 15:42 #24
Det ser ud til at virke som det skal. Smid et svar, så skal du få dine point!

Findes der et sted hvor man kan finde de forskellige navne på forskellige plugins til følgende:
navigator.plugins[]
ActiveXObject()

Eks. hvis jeg gerne vil undersøge for versionen af Macromedia Shockwave player, Adobe Acrobat Reader, Windows Media Player og lign.

Og mange tak for hjælpen!
Avatar billede or.han Nybegynder
05. januar 2006 - 21:41 #25
Jeg kan ikke rigtigt finde et sted, men når du skal bruge det, kan du fx bare søge efter "javascript adobe acrobat reader detection" på google...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester