在javascript的帮助下,尝试使用键盘将焦点从一个锚点标记移动到另一个锚点标签



因此,试图使大型网站(我无法重新设计(符合ADA,遇到了一个问题。当键盘激活第一个锚点时,需要在页面下方将焦点从一个锚点移动到另一个锚点。

制作了一个小的虚拟项目进行实验(Js Fiddle(。


test.html:

<!DOCTYPE html>
<html>
<head>
<title>My Website</title>
<script type="text/javascript" src="test.js.txt"></script>
</head>
<body>
<h1>Page</h1>
<p>content.</p>
<a href="#" onclick="jump('b3')" id="b1">b1</a>
<a href="#">b2</a>
<a href="#"id="b3">b3</a>
<button onclick="jump('b1')" id="b4">b4</button>
</body>
</html>

test.js.txt:

function jump(id){
test = document.getElementById(id);
test.focus();
}

如果我点击b1,它将按预期将焦点更改为b3。与b4至b1相同。使用键盘按空格键或在b4按钮上输入将焦点更改为b1。

但是,如果我尝试使用键盘(回车键(让b1将焦点更改为b3,b3闪烁,焦点恢复为b1。在js中放置断点,显示js被激活(因此闪烁(,但焦点并不停留在b3上。


为了解释这种情况,我们有一个充满导航的标题。出于某种原因,页眉上存在几个伪下拉菜单(它们实际上使隐藏的内容可见(,并且通过单击组成页眉的锚标记来打开它们。下拉菜单的内容都是锚点标签,不是顶部菜单的子项

我需要能够激活菜单项并显示下拉窗口。之后,焦点应该在窗口内跳转,而不是前进到下一个菜单项。

最后,在我遍历了内容之后,我需要返回到最上面的菜单,它是一个锚标记。


感谢大家帮助解决问题

为什么不直接使用tabindex?这就是它的用途。

如果你想通过点击在页面中跳转,请使用命名锚,这就是它们的用途。

最新更新