2010-02-03 10 views
6

Me pregunto si hay una forma de Javascript para detectar si un usuario tiene algún tipo de complemento de bloqueo de flash instalado para que pueda acomodar a estos usuarios correctamente.¿Hay alguna manera de detectar bloqueadores de flash?

Por ejemplo, uso 'clic para flashear', pero los sitios que usan SiFR para representar texto están llenos de botones de "clic para destellar", lo cual es cada vez más molesto. No uso SiFR en mis diseños por este motivo. Pero si pudiera detectar si hay un complemento de bloqueo de flash instalado, simplemente no llamaría a la función SiFR.

¿Alguna idea?

+1

No estoy seguro y no tengo tiempo para profundizar más, pero ¿ha mirado swfobject? http://code.google.com/p/swfobject/ – marcgg

+0

http://stackoverflow.com/questions/17727766/how-to-check-flash-plugin-is-blocked-in-chrome o http://stackoverflow.com/questions/5717062/how-to-detect-flash-using-swfobject – GKislin

Respuesta

4

Eche un vistazo a http://www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html. Puede llamar a lo siguiente después de que la página se haya cargado.

var movie = window.document.movie; 
try { 
    //if the movie is blocked then PercentLoaded() should through an exception 
    if (movie.PercentLoaded() > 0) { 
     //Movie loaded or is loading 
    } 
} 
catch (e) { 
    //Movie is blocked 
} 
+0

404, página no está disponible –

+0

en caso de que a alguien le interesa, la página i archivados en archive.org: https : //web.archive.org/web/20100710000820/http: //www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html – nitro2k01

2

La biblioteca soundmanager2 JS utiliza la función PercentLoaded de una referencia de la película.
Extracto:

return (flash && 'PercentLoaded' in flash ? flash.PercentLoaded() : null); 

notas interesante sintaxis ... Flash/ExternalInterface (ActiveX/NPAPI) métodos de puentes no son typeof “función” ni Función instanceof, pero siguen siendo válidos. Además, JSLint no le gusta ('PercentLoaded' en flash) la sintaxis de estilo y recomienda hasOwnProperty(), que no funciona en este caso. Además, el uso (flash & & flash.PercentLoaded) hace que IE arroje "el objeto no admite esta propiedad o método". Por lo tanto, se debe usar la sintaxis 'in'.

Para obtener una referencia a una película Flash, this page puede ser útil.

Cuestiones relacionadas