Доступность
Проблемы с доступностью в приложениях Electron аналогичны веб-сайтам, поскольку они оба в конечном итоге являются HTML.
Активация специальных возможностей вручную
Electron-приложения будут автоматически включать специальные возможности при наличии ассистивных технологий (например, JAWS на Windows или VoiceOver на macOS). За подробностями обратитесь к документации Chrome о доступности.
Вы также можете вручную переключать эти возможности либо в вашем приложении Electron, либо установив флаги во встроенном программном обеспечении сторонних производителей.
Использование API Electron
By using the app.setAccessibilitySupportEnabled(enabled)
API, you can manually expose Chrome's accessibility tree to users in the application preferences. Имейте в виду, что системные ассистивные утилиты пользователя имеют приоритет над этим параметром и будут переопределять его.
В программах сторонних производителей
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")")