2013-08-17 18 views
7

Questa funzione ritorna sempre "0" in IEcome rilevare Flash Player versione di JS

function getFlashVersion(){ 
var flash = 'None'; 
// Count down from 10. 
for(var i = 10; i > 0; i--) 
{ 
    try{ 
    flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+String(i)); 
    }catch(e){ 
    //console.log(e); 
    } 
    if(flash != 'None') 
    return flash.GetVariable("$version"); 

} 
return 0; 
} 

Ma Chrome tornare 11.8.r800

come rilevare la versione di Flash Player in Internet Explorer.

risposta

7

penso che si avrà più fortuna utilizzando la libreria swfobject. Usando questa libreria si può semplicemente effettuare le seguenti operazioni per ottenere la versione flash tutti i browser:

// returns a JavaScript object 
var playerVersion = swfobject.getFlashPlayerVersion(); 
// access the major, minor and release version numbers via their respective properties 
var majorVersion = playerVersion.major; 
+0

IE dice " 'swfobject' non è definito" –

+0

è stato incluso il file 'swfobject.js' i n il link fornito? Questa libreria definisce la funzionalità swfobject ... – fijas

4

Ecco quello che viene utilizzato in uno dei miei progetti,

Opere buona anche su IE

function getFlashVersion(){ 
    // ie 
    try { 
    try { 
     // avoid fp6 minor version lookup issues 
     // see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/ 
     var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6'); 
     try { axo.AllowScriptAccess = 'always'; } 
     catch(e) { return '6,0,0'; } 
    } catch(e) {} 
    return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; 
    // other browsers 
    } catch(e) { 
    try { 
     if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){ 
     return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1]; 
     } 
    } catch(e) {} 
    } 
    return '0,0,0'; 
} 

var version = getFlashVersion().split(',').shift(); 
if(version < 10){ 
    alert("Lower than 10"); 
}else{ 
    alert("10 or higher"); 
} 
1

Prova questo

var a, b, c, y ='length',v = "name",t = "indexOf",m = "match"; 
    if (c=window.navigator.plugins) 
     for (var d = 0; d < c[y] && !b; d++) { 
      var e = c[d]; - 1 < e[v][t]("Shockwave Flash") && (b = e.description) 
     } 
    if (!b) try { 
     a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"), b = a.GetVariable("$version") 
    } catch (g) {} 
    if (!b) try { 
     a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"), b = "WIN 6,0,21,0", a.AllowScriptAccess = "always", b = a.GetVariable("$version") 
    } catch (ca) {} 
    if (!b) try { 
     a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), b = a.GetVariable("$version") 
    } catch (l) {} 
    b && 
     (a = b[m](/[\d]+/g)) && 3 <= a[y] && (b = a[0] + "." + a[1] + " r" + a[2]); 
    console.log(b) || void 0 
Problemi correlati