El método estático
getCapabilities()
de la clase CapabilitiesGrabber añade cada propiedad de la clase flash.system.Capabilities a un conjunto (
capDP
). Después llama al método estático
getBrowserObjects()
de la clase CapabilitiesGrabber. El método
getBrowserObjects()
utiliza la API externa para recorrer el objeto navigator del navegador, que contiene las características del navegador. El código del método
getCapabilities()
es:
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;
}
El método
getBrowserObjects()
devuelve un conjunto que contiene cada una de las propiedades del objeto navigator del navegador. Si este conjunto tiene una longitud de uno o más elementos, el conjunto de características del navegador (
navArr
) se añade a la matriz de características de Flash Player (
capDP
) y se ordena alfabéticamente el conjunto completo. Por último, el conjunto ordenado se devuelve al archivo de aplicación principal, que llena a continuación la cuadrícula de datos. El código del método
getBrowserObjects()
es el siguiente:
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;
}
Si la API externa está disponible en el entorno de usuario actual, el motor de ejecución de Flash llama al método
JS_getBrowserObjects()
de JavaScript, que recorre el objeto navigator del navegador y devuelve a ActionScript una cadena de valores codificados en URL. Esta cadena se convierte en un objeto URLVariables (
itemVars
) y se añade al conjunto
itemArr
, que se devuelve al script que hizo la llamada.