Html 如何以编程方式关闭JAWS的虚拟光标?

Html 如何以编程方式关闭JAWS的虚拟光标?,html,accessibility,wai-aria,jaws-screen-reader,web-accessibility,Html,Accessibility,Wai Aria,Jaws Screen Reader,Web Accessibility,当您在我的应用程序中搜索某些内容时,我有一些动态文本“n results found”。我在这个元素上有aria atomic=“true”和aria live=“assertive”,如下所示: <p aria-atomic="true" aria-live="assertive">n results found</p> 找到结果 在Mac的画外音中,信息正确无误地发出。但在装有JAWS软件的Windows上,信息不会被发出。我注意到,如果我使用快捷方式“Inser

当您在我的应用程序中搜索某些内容时,我有一些动态文本“n results found”。我在这个元素上有
aria atomic=“true”
aria live=“assertive”
,如下所示:

<p aria-atomic="true" aria-live="assertive">n results found</p>
找到结果

在Mac的画外音中,信息正确无误地发出。但在装有JAWS软件的Windows上,信息不会被发出。我注意到,如果我使用快捷方式“Insert+Z”关闭虚拟光标,
aria-live
字符串将正确地发出

我不希望用户点击
Insert+Z
来实现此功能。有没有办法以编程方式禁用虚拟光标?或者有没有其他办法来解决这个问题

非常感谢您的帮助

PS:我尝试了其他几种组合,比如使用
role=“status”
role=“alert”
aria live=“little”
aria atomic=“true”
。所有这些都可以在Mac的voiceover上使用,并且在使用JAWS的windows上禁用虚拟光标时也可以使用。

简短回答 简短的回答是“否”,您不能从浏览器中禁用虚拟光标。 对于活动区域,有一些属性组合和代码比其他属性组合和代码工作得更好。搜索一下,你应该能找到他们。许多人已经就这个问题写了文章

尽可能使您的代码标准化:使用ARIA、尊重WCAG等而不是使用复杂或专有的解决方案。 从长远来看,它对大多数用户和您自己的应用程序的维护都有好处

更长的答案 出于纯技术文化的考虑,较长的答案是肯定的,可以从外部程序运行Jaws脚本。有两种解决方案:

  • 使用ActiveX或COM客户端直接调用Jaws(FSAPI)的API。ProgID“freedomsci.JawsApi”,方法
    BOOL运行脚本(BSTR)
    BOOL运行函数(BSTR)
  • 使用专门的库来为您调用FSAPI。我是一个名为UniversalSpeech的DLL的作者,它正是这样做的
  • 然而,问题是,据我所知,这两种浏览器都不容易使用。充其量,他们需要用户的许可,通常许可请求时显示的警告会让大多数用户自然地拒绝

    很难解释为什么你需要访问它,对吗?因此,我们当然强烈建议您不要参与其中

    不过,可能会有例外,上述两种解决方案都是可能的。如果您正在嵌入式浏览器中运行桌面应用程序,如Elektron、NWJS、。。。 但即使是在以后的情况下,我也强烈建议不要这样做,除非您有非常特殊和精确的需求。

    简短回答 简短的回答是“否”,您不能从浏览器中禁用虚拟光标。 对于活动区域,有一些属性组合和代码比其他属性组合和代码工作得更好。搜索一下,你应该能找到他们。许多人已经就这个问题写了文章

    尽可能使您的代码标准化:使用ARIA、尊重WCAG等而不是使用复杂或专有的解决方案。 从长远来看,它对大多数用户和您自己的应用程序的维护都有好处

    更长的答案 出于纯技术文化的考虑,较长的答案是肯定的,可以从外部程序运行Jaws脚本。有两种解决方案:

  • 使用ActiveX或COM客户端直接调用Jaws(FSAPI)的API。ProgID“freedomsci.JawsApi”,方法
    BOOL运行脚本(BSTR)
    BOOL运行函数(BSTR)
  • 使用专门的库来为您调用FSAPI。我是一个名为UniversalSpeech的DLL的作者,它正是这样做的
  • 然而,问题是,据我所知,这两种浏览器都不容易使用。充其量,他们需要用户的许可,通常许可请求时显示的警告会让大多数用户自然地拒绝

    很难解释为什么你需要访问它,对吗?因此,我们当然强烈建议您不要参与其中

    不过,可能会有例外,上述两种解决方案都是可能的。如果您正在嵌入式浏览器中运行桌面应用程序,如Elektron、NWJS、。。。
    但即使在后面的例子中,我也强烈建议不要这样做,除非您有非常特殊和精确的需求。

    事实证明,JAWS在这项工作中有一些非常紧张的属性规则。我最终通过以下属性之一实现了这一点:

    <p aria-live="assertive">n results found</p>
    
    <p aria-live="polite">n results found</p>
    
    我知道带有
    aria live=“assertive”
    role=“alert”
    是多余的,因为
    aria live=“assertive”
    在使用时会隐式添加角色警报。但我确实尝试过它作为一个实验,因此上面提到了它


    所有这些在Mac的画外音上都做得很好

    原来JAWS在这项工作中有一些非常紧张的属性规则。我最终通过以下属性之一实现了这一点:

    <p aria-live="assertive">n results found</p>
    
    <p aria-live="polite">n results found</p>
    
    我知道带有
    aria live=“assertive”
    role=“alert”
    是多余的,因为
    aria live=“assertive”
    在使用时会隐式添加角色警报。但我确实尝试过它作为一个实验,因此上面提到了它


    所有这些在Mac的画外音上都做得很好

    您使用的是什么版本的JAWS?还有什么浏览器?这个问题在其他浏览器中仍然存在吗?JAWS 18。是的,我在chrome和Firefox上看到了这个问题,WindowsJaws 18上也有类似的问题,结果是我受到了这个线程中的一个bug的影响,我不确定你是否也遇到了同样的问题,但值得调查。我已经看到这条线了。这对我没有帮助,但非常感谢:)你使用的是什么版本的JAWS?还有什么浏览器?这个问题在其他浏览器中仍然存在吗?JAWS 18。是的,我在chrome和Firefo上看到了这个问题