Доступность
Проблемы с доступностью в приложениях Electron аналогичны веб-сайтам, поскольку они оба в конечном итоге являются HTML.
Активация специальных возможностей вручную
Electron-приложения будут автоматически включать специальные возможности при наличии ассистивных технологий (например, JAWS на Windows или VoiceOver на macOS). За подробностями обратитесь к документации Chrome о доступности.
Вы также можете вручную переключать эти возможности либо в вашем приложении Electron, либо установив флаги во встроенном программном обеспечении сторонних производителей.
Использование API Electron
Используя app.setAccessibilitySupportEnabled(enabled)
API, вы можете вручную показать дерево доступности Chrome пользователям в настройках приложения. Имейте в виду, что системные ассистивные утилиты пользователя имеют приоритет над этим параметром и будут переопределять его.
В программах сторонних производителей
macOS
На macOS сторонняя ассистивная технология может переключать специальные возможности внутри Electron приложения путем программной установки AXManualAccessibility
атрибута:
Using 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);
}
Using 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")")