使用 VoiceOver 时未调用 JavaScript 函数

Jor*_*n H 5 html javascript ios voiceover

我创建并测试了一个包含对屏幕阅读器的完全支持的网页。它与 Mac 版 VoiceOver 配合使用效果很好,但当我尝试 iOS 版 VoiceOver 时,我发现了一个问题。当我双击触发链接时,click不会调用事件侦听器。相反,VO 只是重复aria-label我给出的内容,之后不会宣布“按钮”。当我禁用 VoiceOver 时,只需点击它即可。该链接的作用类似于按钮,而不是导航到另一个网页。这是 VoiceOver 错误还是我的标记或代码有问题?

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

function triggerFunction() {
  alert('testing');
}
Run Code Online (Sandbox Code Playgroud)
<a id="link" href="javascript:void(0);" role="button" aria-label="My Trigger">Trigger Function</a>
Run Code Online (Sandbox Code Playgroud)

小智 0

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

document.addEventListener('DOMContentLoaded', function() {
    document.getElementById('link').addEventListener('click', triggerFunction);
    document.getElementById('link').addEventListener('touchstart', triggerFunction);
});
Run Code Online (Sandbox Code Playgroud)

  • 添加“touchstart”并没有改变行为。请注意,如果我禁用 VoiceOver 并点击它,则会在 iOS 上触发“点击”。 (2认同)