CapabilitiesGrabber 类的静态
getCapabilities()
方法将 flash.system.Capabilities 类中的每个属性添加到数组 (
capDP
)。然后调用 CapabilitiesGrabber 类中的静态
getBrowserObjects()
方法。
getBrowserObjects()
方法使用外部 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()
方法返回一个数组,该数组包含浏览器的导航器对象中的每个属性。如果该数组的长度为一个或多个项目,则将浏览器功能的数组 (
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 运行时将调用 JavaScript
JS_getBrowserObjects()
方法,该方法循环访问浏览器的导航器对象并向 ActionScript 返回 URL 编码的值的字符串。该字符串随后将转换为 URLVariables 对象 (
itemVars
) 并添加到
itemArr
数组中,将向调用脚本返回该数组。