CapabilitiesGrabber 클래스의 정적
getCapabilities()
메서드는 flash.system.Capabilities 클래스에서 배열(
capDP
)에 각 속성을 추가합니다. 그런 다음 CapabilitiesGrabber 클래스에서 정적
getBrowserObjects()
메서드를 호출합니다.
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 런타임에서 JavaScript
JS_getBrowserObjects()
메서드를 호출하여 브라우저의 navigator 객체를 반복하고 URL 인코딩된 값의 문자열을 ActionScript로 반환합니다. 그러면 이 문자열이 URLVariables 객체(
itemVars
)로 변환되고 호출 스크립트로 반환되는
itemArr
배열에 추가됩니다.