2013-07-18 13 views
9

Come posso verificare utilizzando jquery o javascript se il plug-in flash è bloccato in chrome?come verificare che il plug-in flash sia bloccato in Chrome

Siamo in grado di verificare la presenza di portatori di handicap plug in flash usando sotto

((typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") || (window.ActiveXObject && (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) != false)); 

In Chrome è possibile disabilitare il plugin singolarmente cliccando su disabilita plug-in individuale. Quindi se disabilitiamo il plugin individualmente, la query sopra funziona e restituisce false. Ma se blocchiamo tutti i plug-in restituiremo solo true. Quindi la mia preoccupazione è come rilevare che un plugin è stato bloccato.

+0

C'è qualcosa di sbagliato in quello che hai? È una domanda o stavi tentando di risponderti? – Eric

+0

Qual è la differenza dal rilevamento se il plug-in Flash è disabilitato o bloccato? Immagino che finirai con lo stesso risultato - nessun plugin Flash. – intuitivepixel

+0

In Chrome è possibile disabilitare singolarmente i plug-in facendo clic su disabilita i singoli plug-in. Quindi se disabilitiamo il plugin individualmente, la query sopra funziona e restituisce false. Ma se blocchiamo tutti i plug-in restituiremo solo true. Quindi la mia preoccupazione è come rilevare che un plugin è stato bloccato. – virus

risposta

2

È possibile utilizzare qualcosa come swfobject per gestire il rilevamento del flash, ma anche qualcosa del genere dovrebbe funzionare;

var flashAvailable = false; 
try { 
    var flash = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); 
    if(flash) { 
    flashAvailable = true; 
    } 
} 
catch(e) { 
    if(navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) { 
    flashAvailable = true; 
    } 
} 
+2

In Chrome è possibile disabilitare singolarmente i plug-in facendo clic su disabilita i singoli plug-in. Quindi se disabilitiamo il plugin individualmente, la query sopra funziona e restituisce false. Ma se blocchiamo tutti i plug-in, verrà restituito solo true.Quindi la mia preoccupazione è come rilevare che un plugin è stato bloccato. Quindi la risposta sopra non è prevista. – virus

+0

@virus, ho capito il tuo punto, mi dispiace quindi: / – intuitivepixel

0

Ho trovato che l'unico metodo affidabile è quello di ottenere il singolo elemento Flash per avvisare il browser che è abilitato, vale a dire. che non è bloccato.

Lo faccio utilizzando il seguente codice all'inizio del mio file Flash:

import flash.external.ExternalInterface; 
ExternalInterface.call('flashHasLoaded','my-identifier'); 

Questo poi attiva una funzione JavaScript nel browser:

<script type="text/javascript"> 
    function flashHasLoaded(optionalIdentifier){ 
     alert("A flash file has started running"); 
     if(optionalIdentifier == "specific-thing") alert("Specific thing loaded - do something"); 
    } 
</script> 

Ricordate che questo trigger abituato subito , solo dopo che Flash è stato caricato e avviato.

0

L'unico modo in cui potrei pensare di verificare se il browser sta bloccando il plug-in è di effettuare una chiamata al plugin e vedere se ritorna. Nel tuo caso, questi passaggi:

  1. Verificare che il plug-in flash sia installato.
  2. Inizializza il tuo flash swf come al solito.
  3. Chiama una funzione tramite l'interfaccia esterna Flash progettata per dirti se il plug-in risponde.
  4. Se risponde, procedere normalmente.
  5. Se non risponde, ricorrere idealmente a una soluzione javascript.

Poiché si tratta di una cosa di sicurezza del browser, non si ha accesso diretto a un'API che può dirti se il plug-in desiderato è bloccato. Penso che questa potrebbe essere l'unica soluzione disponibile al momento. Inoltre, notare che l'ultima versione di chrome (54.0.2840.59 in questo momento) chrome sta bloccando tutto il flash se è in esecuzione in un iframe.

Problemi correlati