CapabilitiesGrabber クラスの静的
getCapabilities()
メソッドは、flash.system.Capabilities クラスからの各プロパティを配列(
capDP
)に追加します。その後、CapabilitiesGrabber クラス内の静的
getBrowserObjects()
メソッドを呼び出します。
getBrowserObjects()
メソッドは、External API を使用して、ブラウザーの機能を格納するブラウザーのナビゲーターオブジェクトをループ処理します。
getCapabilities()
メソッドは、次のとおりです。
public static function getCapabilities():Array
{
var capDP:Array = new Array();
capDP.push({name:"Capabilities.avHardwareDisable", value:Capabilities.avHardwareDisable});
capDP.push({name:"Capabilities.hasAccessibility", value:Capabilities.hasAccessibility});
capDP.push({name:"Capabilities.hasAudio", value:Capabilities.hasAudio});
...
capDP.push({name:"Capabilities.version", value:Capabilities.version});
var navArr:Array = CapabilitiesGrabber.getBrowserObjects();
if (navArr.length > 0)
{
capDP = capDP.concat(navArr);
}
capDP.sortOn("name", Array.CASEINSENSITIVE);
return capDP;
}
getBrowserObjects()
メソッドは、ブラウザーのナビゲーターオブジェクトに含まれる各プロパティの配列を返します。その配列の長さが 1 項目以上である場合、ブラウザー機能の配列(
navArr
)が Flash Player 機能の配列(
capDP
)に付加され、配列全体がアルファベット順でソートされます。最後に、ソートされた配列がメインアプリケーションファイルへ返され、メインアプリケーションファイルがデータグリッドにデータを入れます。
getBrowserObjects()
メソッドのコードは次のとおりです。
private static function getBrowserObjects():Array
{
var itemArr:Array = new Array();
var itemVars:URLVariables;
if (ExternalInterface.available)
{
try
{
var tempStr:String = ExternalInterface.call("JS_getBrowserObjects");
itemVars = new URLVariables(tempStr);
for (var i:String in itemVars)
{
itemArr.push({name:i, value:itemVars[i]});
}
}
catch (error:SecurityError)
{
// ignore
}
}
return itemArr;
}
現在のユーザー環境で External API が使用可能な場合、Flash ランタイムは JavaScript の
JS_getBrowserObjects()
メソッドを呼び出します。このメソッドはブラウザーのナビゲーターオブジェクトをループ処理し、URL エンコードされた値のストリングを ActionScript に返します。このストリングは、その後、URLVariables オブジェクト(
itemVars
)に変換され、
itemArr
配列に追加されます。その配列が、呼び出し元のスクリプトへ返されます。