De statische methode
getCapabilities()
van de klasse CapabilitiesGrabber voegt elke eigenschap van de klasse flash.system.Capabilities toe aan een array (
capDP
). Vervolgens roept de methode de statische methode
getBrowserObjects()
in de klasse CapabilitiesGrabber aan. De methode
getBrowserObjects()
gebruikt de externe API om het navigatorobject van de browser dat de mogelijkheden van de browser bevat, met een lus te doorlopen. De methode
getCapabilities()
ziet er als volgt uit:
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;
}
De methode
getBrowserObjects()
retourneert een array van alle eigenschappen in het navigatorobject van de browser. Als deze array een lengte heeft van een of meer items, wordt de array van browsermogelijkheden (
navArr
) toegevoegd aan de array van Flash Player-mogelijkheden (
capDP
) en wordt de hele array alfabetisch gesorteerd. Ten slotte wordt de gesorteerde array geretourneerd aan het hoofdtoepassingsbestand. Hiermee wordt vervolgens het gegevensraster gevuld. De code voor de methode
getBrowserObjects()
ziet er als volgt uit:
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;
}
Als de externe API beschikbaar is in de huidige gebruikersomgeving, roept Flash-runtime de JavaScript-methode
JS_getBrowserObjects()
aan, die het navigatorobject van de browser met een lus doorloopt en een tekenreeks van URL-gecodeerde waarden aan ActionScript retourneert. Deze tekenreeks wordt vervolgens omgezet in een object URLVariables (
itemVars
) en toegevoegd aan de array
itemArr
, die wordt geretourneerd aan het aanroepende script.