2010-02-19 104 views
7

我想知道用戶在我的Flex 4應用程序中運行的瀏覽器的類型和版本。我知道我可以通過使用ExternalInterface來調用Javascript來獲取這些信息。我知道我可以從服務器獲取這些信息。從Flash中檢測瀏覽器的類型和版本

我正在尋找一種方式直接從actionscript獲取該信息。我的意思是,是不是有一個全局變量或保存這些信息的東西?

+0

我的猜測是,你不能,更我希望有更多的flash.capabilities,但你只能找到操作系統和玩家類型。 – Les 2010-02-19 16:19:05

回答

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); 
     } 

    } 

} 
+0

@Lars:由於ExternalInterface.call()函數用於調用它,因此函數在瀏覽器中執行。 @goliatone,謝謝你的詳細解答,我可能會這樣做。我只是想知道是否已經有一個我可以使用的全局變量,但在文檔中找不到。 – Jaffer 2010-02-20 11:41:54

+0

@Lars:基本上,外部接口將嘗試執行任何傳遞給它的字符串。我將這個方法包裝在一個cdata xml標籤中,這樣我就可以在編輯器中以舒適的方式創建該字符串。 @jaffer:據我所知,這樣最方便。 – goliatone 2010-02-25 15:16:27