检测Flash中的浏览器类型和版本

7

我希望在我的Flex 4应用程序中了解用户正在运行的浏览器类型和版本。我知道可以使用ExternalInterface调用Javascript获取该信息,也可以从服务器获取该信息。

我正在寻找一种直接从ActionScript获取此信息的方法。我的意思是,难道没有一个全局变量或其他东西来保存这些信息吗?


我的猜测是你做不到,我希望在flash.capabilities中能找到更多信息,但那里只能找到操作系统和播放器类型。 - Les
1个回答

9
由于您没有全局变量,所以您无法这样做。但是为什么不使用ExternalInterface和JavaScript呢?
var method:XML = <![CDATA[
     function( ){ 
         return { appName: navigator.appName, version:navigator.appVersion};}
    ]]>

var o:Object = ExternalInterface.call( method );
trace( "app name ",o.appName,"version ", o.version )

如果你将它作为一个静态方法放在一个类中,对于你来说,它就像调用内部类一样透明...
package {
    import flash.external.ExternalInterface;


    public class BrowserUtils {

        private static const CHECK_VERSION:XML = <![CDATA[
             function( ) { 
                return { appName: navigator.appName, version:navigator.appVersion };
                }
            ]]>;

        public static function getVersion( ):Object {
            if ( !ExternalInterface.available ) return null;            

            return ExternalInterface.call( CHECK_VERSION );
        }

    }

}

@Lars:由于使用ExternalInterface.call()函数调用它,所以该函数在浏览器中执行。@goliatone,感谢您详细的回答,我可能会这样做。我只是想知道是否已经有一个全局变量可以使用,但在文档中找不到。 - Jaffer
@Lars:基本上,外部接口将尝试执行您传递给它的任何字符串。我将该方法包装在cdata xml标记中,只是为了可以在我的编辑器中以舒适的方式创建该字符串。 @jaffer:我明白了,那样会非常方便。 - goliatone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接