有没有办法检测Flash阻止程序?

时间:2010-02-03 13:36:30

标签: javascript flash plugins

我想知道是否有一种Javascript方式来检测用户是否安装了任何类型的闪存阻止插件,以便我能够正确容纳这些用户。

例如,我使用'click to flash',但是使用SiFR渲染文本的网站上散布着“点击闪存”按钮,这非常烦人。因此我不在设计中使用SiFR。但是,如果我能够发现安装了闪存阻塞插件,我就不会调用SiFR功能。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

看看http://www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html。您可以在页面加载后调用以下内容。

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
}

答案 1 :(得分:2)

soundmanager2 JS库使用电影参考的PercentLoaded功能 摘录:

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

有趣的语法注释... Flash / ExternalInterface(ActiveX / NPAPI)桥接方法不是typeof“function”,也不是instanceof Function,但仍然有效。另外,JSLint不喜欢(Flash中的'PercentLoaded')式语法,并推荐hasOwnProperty(),在这种情况下不起作用。此外,使用(flash&& flash.PercentLoaded)会导致IE抛出“对象不支持此属性或方法”。因此,必须使用'in'语法。

要获得对Flash电影的引用,this page可能会很有用。