是否有一种方法可以通过编程触发TAB键将焦点移动到下一个可聚焦的元素
Is there a way to programmatically trigger the TAB key to move the focus to the next focusable element?
我正在编写一个单元测试来测试我的网页上的选项卡顺序,我找不到一种方法来模拟用户按下tab键以专注于下一个可聚焦的元素,尽管这似乎是一项简单的任务。
允许使用jQuery,但优先使用纯javascript解决方案。如有任何帮助,不胜感激。
// TODO
function triggerTab () {
}
$("#btn-save").focus();
triggerTab();
// Expect the focus is on the cancel button now.
console.log(document.activeElement.id);
<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>
注:对下一个可聚焦的元素调用focus()是不可接受的,即使您可以编写代码来找出下一个可聚焦的元素。所以这个路径不是我想要的:
function getAllFocusables () {
...
}
var focusables = getAllFocusables(),
index = focusables.indexOf(document.activeElement);
$(focusables[index+1]).focus();
你不能使用Javascript模拟标准浏览器中的选项卡键。
如果您正在使用无头浏览器进行单元测试,例如phantomjs
, 您可以模拟制表键
var webPage = require('webpage');
var page = webPage.create();
page.sendEvent('keypress', page.event.key.Tab);
相关文章:
- 将焦点移动到页面元素
- 强制单击空链接以不移动页面焦点
- 使用jQuery在焦点上选择文本框是't在移动浏览器中工作
- 将插入符号移动到焦点上文本区域的末尾
- 如果用户不更改该选项,请将焦点移动到下一个字段
- 使用 javascript 或 jquery 将页面的焦点移动到单击的元素上
- 防止<text区域>避免失去焦点以保持移动键盘
- 如何将光标移动到所见即所得框的末尾并设置焦点
- 如何仅在移动设备上消除输入的焦点
- 固定位置分割防止焦点在元素之间移动时滚动
- JavaScript将焦点放在元素/标记上,并使用光标键四处移动
- HTML:如何防止焦点从元素移动
- D3,当上下文发生变化时,第二焦点不会移动
- 手动移动焦点时Combo不会模糊
- 如何滚动到底部或移动焦点到底部的角度
- 对于移动浏览器,当文本字段处于焦点中时,我如何“推送”?将文本字段移至页面顶部,而不是默认的中间位置
- 是否有一种方法可以通过编程触发TAB键将焦点移动到下一个可聚焦的元素
- 加载另一个网页并移动焦点
- 删除键移动焦点到上一个输入字段
- 如果用户名正确,则自动移动焦点.jquery