gpt4 book ai didi

c# - ASP.NET MVC - 如何检测用户是否正在使用屏幕阅读器

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:49 25 4
gpt4 key购买 nike

所以我目前正在尝试检查用户是否在我们的网站上使用屏幕阅读器。我想检查他们是否是因为我们的网站提供了一个培训模块,如果他们使用屏幕阅读器,我想显示一个按钮,允许他们下载培训的可打印版本。

到目前为止,这是我尝试过的:

internal class UnsafeNativeMethods
{
public const uint SPI_GETSCREENREADER = 0x0046;

[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref bool pvParam, uint fWinIni);
}

public static class ScreenReader
{
public static bool IsRunning
{
get
{
bool returnValue = false;
if (!UnsafeNativeMethods.SystemParametersInfo(UnsafeNativeMethods.SPI_GETSCREENREADER, 0, ref returnValue, 0))
{
throw new Win32Exception(Marshal.GetLastWin32Error(), "error calling SystemParametersInfo");
}
return returnValue;
}
}
}

我从以下 StackOverflow 线程中获取了这段代码:C# : How to detect if screen reader is running?

我正在使用的方法显然适用于某些人,如您在此线程中所见,但我目前在调用 ScreenReader.IsRunning 时总是得到“false”。我将 ScreenReader.IsRunning 值存储在 ViewBag 中,然后在我的 View 中,如果该值为真,我将使用 Razor 语法显示按钮。不太确定为什么它总是错误的。如果您使用的是 Windows 10,我已经使用 JAWS 以及每个人的计算机上附带的讲述人对此进行了测试。任何帮助将非常感激。谢谢大家!

最佳答案

无法检测用户是否正在运行屏幕阅读器。如果可能的话,这将为不道德的人打开一扇大门,让他们可以利用残疾人,或者提供完全不同的“无障碍”浏览器体验,而不是构建在设计上具有包容性的界面。

您可以创建一个放置在屏幕外但仍按 Tab 键顺序排列的按钮,并在它获得焦点时使其可见。这样盲人用户就可以找到它,而有视力的键盘用户也不会认为按钮获得焦点时发生了什么奇怪的事情。

关于c# - ASP.NET MVC - 如何检测用户是否正在使用屏幕阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52412919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com