我正在研究键盘辅助功能。我有一个位于页面内的flash对象,为了阻止焦点陷入其中,我添加了标签监听器,通过ExternalInterface
与一些JavaScript函数进行通信。
JavaScript会查找包含tabIndex
的下一个可用元素,并在其上调用focus()
。到现在为止还挺好。但是,如果插件是页面上的最后一个tabbable项(或者反向标签时的第一个),则没有要切换的元素。通常这会将焦点设置到浏览器窗口,所以我想保持这种行为。
因此我的问题是:是否有可能以编程方式关注浏览器的chrome?如果我可以模仿向前和向后标签,那就更好了。另外,我希望尽可能避免在闪存之前/之后添加额外的可列表组件,除非我可以使它们对鼠标和键盘都有效。
答案 0 :(得分:2)
在我自己的搜索中找到了类似的答案。如果要将焦点放在当前关注的元素上,请使用document.activeElement;如果您希望在不支持的情况下回退,请将焦点放在文档的父元素上。据我所知,这应该支持所有已知的浏览器:
var activeElement = document.activeElement;
if (activeElement) {
activeElement.blur();
} else if (document.parentElement) {
document.parentElement.focus();
} else {
window.focus();
}
答案 1 :(得分:0)
将焦点设置为文档顶部没有文本内容的虚拟锚点似乎有效:
document.getElementsByTagName('a')[0].focus();