O método estático
getCapabilities()
da classe CapabilitiesGrabber adiciona cada propriedade da classe flash.system.Capabilities a uma matriz (
capDP
). Em seguida, ele chama o método estático
getBrowserObjects()
na classe CapabilitiesGrabber. O método
getBrowserObjects()
usa a API externa para loop sobre o objeto navigator do navegador que contém as capacidades do navegador. O método
getCapabilities()
é o seguinte:
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;
}
O método
getBrowserObjects()
retorna uma matriz de cada uma das propriedades do objeto navigator no navegador. Se essa matriz tiver um comprimento de um ou mais itens, a matriz de capacidades do navegador (
navArr
) será anexada à matriz de capacidades do Flash Player (
capDP
) e a matriz inteira será classificada alfabeticamente. Finalmente, a matriz classificada será retornada ao arquivo do aplicativo principal que, em seguida preencherá a grade de dados. O código para o método
getBrowserObjects()
é o seguinte:
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;
}
Se a API externa estiver disponível no ambiente atual do usuário, o tempo de execução do Flash chamará o método
JS_getBrowserObjects()
do JavaScript que executa loop sobre o objeto navigator do navegador e retorna uma string de valores codificados de URL ao ActionScript. Em seguida, essa string é convertida em um objeto URLVariables (
itemVars
) e adicionada à matriz
itemArr
que é retornada para o script de chamada.