アクセシビリティ
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")")