Перейти к основному содержанию

Доступность

Проблемы с доступностью в приложениях 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")")