Статический метод
getCapabilities()
класса CapabilitiesGrabber добавляет каждое свойство класса flash.system.Capabilities в массив (
capDP
). Затем он вызывает статический метод
getBrowserObjects()
класса CapabilitiesGrabber. Метод
getBrowserObjects()
использует внешний API-интерфейс для получения объекта navigator обозревателя, который содержит данные о его возможностях. Метод
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()
возвращает массив каждого свойства в объекте navigator обозревателя. Если этот массив содержит один или несколько элементов, то массив возможностей обозревателя (
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;
}
Если в текущей пользовательской среде доступен внешний API-интерфейс, среда выполнения Flash вызывает метод
JS_getBrowserObjects()
кода JavaScript, который циклически обрабатывает объект navigator браузера и возвращает строку значений в кодировке URL коду ActionScript. Затем эта строка преобразуется в объект URLVariables (
itemVars
) и добавляется в массив
itemArr
, который передается вызывающему сценарию.