접근성
Electron 애플리케이션에서의 접근성 문제는 웹사이트와 크게 다르지 않다. 둘 다 결국 HTML을 기반으로 하기 때문이다.
접근성 기능 수동 활성화
Electron 애플리케이션은 보조 기술(예: Windows의 JAWS 또는 macOS의 VoiceOver)이 감지되면 자동으로 접근성 기능을 활성화한다. 자세한 내용은 Chrome의 접근성 문서를 참고한다.
Electron 애플리케이션 내에서 직접 접근성 기능을 수동으로 전환하거나, 외부 네이티브 소프트웨어에서 플래그를 설정하여 활성화할 수도 있다.
Electron API 활용하기
app.setAccessibilitySupportEnabled(enabled)
API를 사용하면 애플리케이션 설정에서 Chrome의 접근성 트리를 수동으로 사용자에게 노출할 수 있다. 단, 사용자의 시스템 접근성 도구가 이 설정보다 우선순위를 가지며 이를 재정의한다는 점에 유의해야 한다.
타사 소프트웨어 내에서
macOS
macOS에서는 타사 보조 기술이 AXManualAccessibility
속성을 프로그래밍 방식으로 설정해 Electron 애플리케이션 내의 접근성 기능을 전환할 수 있다.
Objective-C 사용 예시:
CFStringRef kAXManualAccessibility = CFSTR("AXManualAccessibility");
+ (void)enableAccessibility:(BOOL)enable inElectronApplication:(NSRunningApplication *)app
{
AXUIElementRef appRef = AXUIElementCreateApplication(app.processIdentifier);
if (appRef == nil)
return;
CFBooleanRef value = enable ? kCFBooleanTrue : kCFBooleanFalse;
AXUIElementSetAttributeValue(appRef, kAXManualAccessibility, value);
CFRelease(appRef);
}
Swift 사용 예시:
import Cocoa
let name = CommandLine.arguments.count >= 2 ? CommandLine.arguments[1] : "Electron"
let pid = NSWorkspace.shared.runningApplications.first(where: {$0.localizedName == name})!.processIdentifier
let axApp = AXUIElementCreateApplication(pid)
let result = AXUIElementSetAttributeValue(axApp, "AXManualAccessibility" as CFString, true as CFTypeRef)
print("Setting 'AXManualAccessibility' \(error.rawValue == 0 ? "succeeded" : "failed")")