是否可以检测iPhone上的网页中是否启用了VoiceOver?

时间:2011-01-20 13:53:31

标签: iphone web accessibility voiceover

我们目前正在使用touchmaplite JavaScript库测试在我们的移动网络应用上部署“滑动”地图(即,用手指在触摸屏设备上移动的地图)。此地图在我们的网页中嵌入为iframe。

当我们在配备VoiceOver的iPhone上测试此设置时,我们发现VoiceOver在地图上“卡住”,并且不会读取它(或者确实滚过它)。这对我们来说是一个很大的障碍,我们不希望在我们的网站上提供无障碍支持。

是否可以将一个元素标记为被VoiceOver“忽略”,或者检测VoiceOver是否以其他任何方式启用(可能是JS),然后隐藏/删除iframe?

2 个答案:

答案 0 :(得分:2)

我知道在Windows中,已经讨论过如何检测是否正在使用屏幕阅读器。提到了一种可能(但不可靠)的方法,即在Flash中使用actionscript来查看是否正在使用WMicrosoft Active Accessibility层。 (http://www.paciellogroup.com/blog/?p=61)

显然这没什么用,因为你的目标是用户,他们的设备上没有Flash支持,但我提到它只是让你知道其他平台做了什么 - 我不是太熟悉了苹果,所以不知道是否有类似于你可以使用的Flash。

在您的情况下,您可以使用隐藏文字,包括链接,这些文字将由屏幕阅读器,而不是视力正常的用户选择,这将指向屏幕阅读器用户的备用页面;这个备用页面可以复制您现有的页面,只是没有嵌入的地图。

替代方案,只有一个隐藏的链接,配音\屏幕阅读器用户可以跳过地图,可能会提醒他们VoiceOver被卡住的问题。

隐藏文字可以通过使用CSS来定位带有负边距的文本来实现,例如

.hiddenText {
position: absolute;
margin-left: -3000px;
}

以这种方式使用文本意味着它对于有视力的用户是不可见的(除非他们禁用CSS),但仍然被屏幕阅读器读出。

这两种解决方案都不是你真正想要的,但我可能会给你一些想法。

答案 1 :(得分:0)

aria-hidden是您要寻找的。

<div>some stuff</div>
<div aria-hidden="true">stuff you want to hide from the screen reader</div>
<div>more stuff</div>