Aller au contenu principal

Accessibilité

Les problèmes d’accessibilité dans les applications Electron sont similaires à ceux des sites Web puisque tous les deux utilise le HTML.

Activer manuellement les fonctionnalités d'accessibilité

Les applications Electron activeront automatiquement les fonctionnalités d'accessibilité en présence de technologies d'assistance (e.g JAWS sur Windows ou VoiceOver sur macOS). Pour plus de détails, consultez la documentation d’accessibilité de Chromium.

Vous pouvez également basculer manuellement ces fonctionnalités soit dans votre application Electron soit en définissant des indicateurs dans un logiciel natif tiers.

Utilisation de l'API d'Electron

En utilisant l'APIapp.setAccessibilitySupportEnabled(enabled), vous pouvez exposer manuellement l'arbre d'accessibilité de Chrome aux utilisateurs dans les préférences de l'application. Notez que les utilitaires d'assistance du système de l'utilisateur ont priorité sur ce paramètre et l'emporteront sur ce paramètre.

Dans un logiciel tiers

macOS

Sur macOS, la technologie d'assistance tierce peut activer/désactiver les fonctionnalités d'accessibilité dans les applications Electron en définissant par programme l'attribut AXManualAccessibility :

Utilisation avec 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);
}

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