メインコンテンツへ飛ぶ

アクセシビリティ

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")")