有没有办法以编程方式触发TAB键将焦点移动到下一个可聚焦元素?

Jas*_*Lee 7 html javascript jquery accessibility

我正在编写一个单元测试来测试我的网页上的Tab键顺序,我找不到一种方法来模拟用户键入TAB键以关注下一个可聚焦元素,尽管这似乎是一项简单的任务.

允许使用jQuery,而首选纯javascript解决方案.任何形式的帮助表示赞赏.

// TODO
function triggerTab () {


}

$("#btn-save").focus();
triggerTab();

// Expect the focus is on the cancel button now.
console.log(document.activeElement.id);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p> some text </p> 
<button id="btn-save"> save </button>
<button id="btn-cancel> cancel </button>
Run Code Online (Sandbox Code Playgroud)

PS在下一个可聚焦元素上调用focus()是不可接受的,即使你可以编写代码来找出下一个可聚焦元素.所以这条路不是我想要的:

function getAllFocusables () {
    ...
}

var focusables = getAllFocusables(),
    index = focusables.indexOf(document.activeElement);

$(focusables[index+1]).focus();
Run Code Online (Sandbox Code Playgroud)

Ada*_*dam 5

您无法使用Javascript 从标准浏览器模拟Tab键.

如果您使用无头浏览器进行单元测试,phantomjs例如,您可以模拟Tab键

var webPage = require('webpage');
var page = webPage.create();

page.sendEvent('keypress', page.event.key.Tab);
Run Code Online (Sandbox Code Playgroud)