开发者

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 cou开发者_高级运维ld spot wether there's a flash blocking plugin installed, I would simply not call the SiFR function.

Any ideas?


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
}


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜