使用VoiceOver时未调用JavaScript函数

时间:2014-12-24 02:48:10

标签: javascript html ios voiceover

我创建并测试了一个网页,其中包括对屏幕阅读器的全面支持。它适用于Mac的VoiceOver,但是当我尝试使用VoiceOver for iOS时,我发现了一个问题。当我双击以触发链接时,不会调用click事件侦听器。相反,VO只是重复aria-label我给它,并且它没有宣布"按钮"然后。当我禁用VoiceOver时,只需点击它即可。该链接的行为类似于按钮,而不是导航到其他网页。这是VoiceOver错误还是我的标记或代码出现问题?



document.addEventListener('DOMContentLoaded', function() {
    document.getElementById('link').addEventListener('click', triggerFunction);
});

function triggerFunction() {
  alert('testing');
}

<a id="link" href="javascript:void(0);" role="button" aria-label="My Trigger">Trigger Function</a>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

对于iOS,显然没有鼠标,因此您不能click,但您可以做的是监听touch事件。

document.addEventListener('DOMContentLoaded', function() {
    document.getElementById('link').addEventListener('click', triggerFunction);
    document.getElementById('link').addEventListener('touchstart', triggerFunction);
});

答案 1 :(得分:0)

你的链接元素是否嵌套在另一个元素中?有时,VoiceOver的点击事件将对其进行操作,而不会向下冒泡到嵌套元素。

例如,如果你的html看起来像这样:

<li id="parent">
  <div id="link" onclick="myFunction()">
  </div>
</li>

然后尝试将您的点击处理程序向上移动到父元素。