当前位置: 首页 > 知识库问答 >
问题:

safari OSX画外音未读取aria标签输入

夏学名
2023-03-14

我正在尝试让voiceover在safari上工作,但是,在某个场景中,当我在元素中跳转时,它似乎不会读出新输入框的aria-label。

场景:

当跳转到下一个元素,并且当前元素的on模糊对dom起作用时,它将不会读出下一个元素的aria-label。

下面是一个示例http://plnkr.co/edit/x0c67oil0wlqeGubiqvz?p=preview

请注意,如果您取出下面的onblur函数,那么它可以正常工作。

<input id="test" onblur="blurer()" onfocus="focuser()"/>

共有1个答案

颛孙飞鸾
2023-03-14

在本例中,问题不是blurer的存在,而是blurer和相应的focuser函数的内容。这两个函数一起切换nearbye元素的隐藏状态。这打断了宣布。还有一个角色公告也会出现。完整的annoucement(当文本填充在edit text控件中时)应为:

"The edited text" contents selected/unselected, "your aria label", edit text.

引用的部分是您控制的部分,其他部分是由OS/VoiceOver与其交互控制的部分,由控件的状态和其他aria值自动计算。

我们得到的消息很简单

"The edited text"

所以,这不是一个问题与咏叹调标签特别。而是导致元素的整个公告被中断。

当你的模糊和聚焦功能触发你的画外音的响应(或操作系统的通信)这些事件。不确定你的功能是什么造成的。无论如何,在这些情况下,一个有帮助的技巧是在代码中添加一个setTimeout。通过分离您的函数和实际的焦点/模糊事件,您可以允许可访问性API在处理页面上的样式和诸如此类的事情之前完成它们的工作。下面是一个使您的小代码段工作的示例。只需将javascript文件的内容替换为以下内容:

function blurer(){
  window.setTimeout(function() {
    document.getElementById('myDiv').style.display = 'none';//  
  }, 0);
}

function focuser(){
  window.setTimeout(function() {
    document.getElementById('myDiv').style.display = 'block';//  
  }, 0);
}

一般来说,我喜欢避免setTimeouts,因为它们会产生竞争条件。但是,setTimeouts为0是可以接受的,因为没有竞争条件。您只是通过将代码推到队列的末尾来解耦触发事件和代码的执行。当黑客攻击VoiceOver时,setTimeout(someFunction,0)在很多情况下都能很好地工作。

 类似资料:
  • 我尝试使用getch()和kbsit()读取用户的输入,但它似乎无法识别按键被按下。 此代码打印“开始”,按下键时不打印任何内容。使用getch()读取和打印哪怕一个字符,而不使用循环,我都不走运。

  • 对当前营销用户的所有标签进行管理,营销通里支持简单的标签分组,对于标签分组如“基础信息”、“营销偏好”、“购买偏好”等,由企业根据需要自定义标签。 1. 管理标签与标签分组 访问【用户运营】-【标签画像】-【用户标签管理】-【设置】,进入营销通标签管理,在这里可以对标签及标签分组进行管理,建议企业在这里提前设置好需使用的标签; 2. 使用标签 在公众号营销场景下使用标签 可在用户扫码渠道二维码关注

  • 问题内容: 我有一个应该调用ruby脚本的go程序。 我有一个功能: 我这样调用它: 它适用于大多数情况,除非子进程中有一个或任何类似的操作需要暂停输入。 我已经尝试设置,但是它不等待输入。 我究竟做错了什么? 问题答案: 下面的程序好像你问什么(我几乎等同于你的。我只是改变了到了线。)你在做一些不同的东西?

  • 我有一个阅读NFC类型A标签(非NDEF)的活动。我用Android手机在开发者模式下运行Android Studio。 该项目在开发者Android手机上正确启动应用程序,并在手机上打开NFC。当我轻触手机上的NFC非接触式卡时,手机会检测到NFC卡,但会显示手机上安装的其他NFC读卡器应用程序的选项列表,而不是将意图传递给前台应用程序。 如何让前台项目的应用程序接收NFC意图,而不是弹出建议列

  • 我正在尝试使用nfc android库读取ISO15693 RFID标签: 有关该标签的更多信息如下:http://img42.com/gw07d+

  • 问题内容: 如何使用Go中的函数从标准输入获取整数输入? 如果使用无法完成此操作,那么读取单个整数的最佳方法是什么? 问题答案: http://golang.org/pkg/fmt/#Scanf Go中包含的所有库都有充分的文档记录。 话虽如此,我相信 绝招