进阶 electronjs.org 2026-10-07 23:51:43 · 7 阅读

第1章 Electron 应用的可访问性

可访问性

由于 Electron 应用的底层都是 HTML,因此其可访问性问题与网站相似。

手动启用可访问性功能

当检测到辅助技术(如 Windows 上的 JAWS 或 macOS 上的 VoiceOver)时,Electron 应用会自动启用可访问性功能。更多细节请参阅 Chrome 的可访问性文档。

你还可以通过以下两种方式手动切换这些功能:在 Electron 应用内部操作,或在第三方原生软件中设置标志位。

使用 Electron API

通过 app.setAccessibilitySupportEnabled(enabled) API,你可以在应用偏好设置中手动向用户暴露 Chrome 的可访问性树。请注意,用户系统自带的辅助工具具有更高优先级,并会覆盖此设置。

在第三方软件中

macOS

在 macOS 上,第三方辅助技术可以通过编程方式设置 AXManualAccessibility 属性,来切换 Electron 应用内的可访问性功能:

使用 Objective-C:

```objectivec 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:

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

评论 (0)