我创建并测试了一个网页,其中包括对屏幕阅读器的全面支持。它适用于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;
答案 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>
然后尝试将您的点击处理程序向上移动到父元素。