gargantuan
gargantuan

Reputation: 8944

Is there a way to detect Flash blockers?

I'm wondering wether there's a Javascript way to detect wether a user has any sort of flash blocking plugin installed so i can accommodate these users properly.

For example, I use 'click to flash', but sites that use SiFR to render text are littered with "click to flash" buttons, which is getting very annoying. I don't use SiFR in my designs for this reason. But if I could spot wether there's a flash blocking plugin installed, I would simply not call the SiFR function.

Any ideas?

Upvotes: 6

Views: 2080

Answers (2)

Protector one
Protector one

Reputation: 7311

The soundmanager2 JS library uses the PercentLoaded function of a movie reference.
Excerpt:

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

Interesting syntax notes… Flash/ExternalInterface (ActiveX/NPAPI) bridge methods are not typeof “function” nor instanceof Function, but are still valid. Additionally, JSLint dislikes (‘PercentLoaded’ in flash)-style syntax and recommends hasOwnProperty(), which does not work in this case. Furthermore, using (flash && flash.PercentLoaded) causes IE to throw “object doesn’t support this property or method”. Thus, ‘in’ syntax must be used.

For getting a reference to a Flash movie, this page might prove useful.

Upvotes: 2

Nathan Villaescusa
Nathan Villaescusa

Reputation: 17659

Take a look at http://www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html. You could call the following after the page has loaded.

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
}

Upvotes: 5

Related Questions