专注于浏览器

时间:2013-04-05 19:37:31

标签: javascript jquery focus

我正在研究键盘辅助功能。我有一个位于页面内的flash对象,为了阻止焦点陷入其中,我添加了标签监听器,通过ExternalInterface与一些JavaScript函数进行通信。

JavaScript会查找包含tabIndex的下一个可用元素,并在其上调用focus()。到现在为止还挺好。但是,如果插件是页面上的最后一个tabbable项(或者反向标签时的第一个),则没有要切换的元素。通常这会将焦点设置到浏览器窗口,所以我想保持这种行为。

因此我的问题是:是否有可能以编程方式关注浏览器的chrome?如果我可以模仿向前向后标签,那就更好了。另外,我希望尽可能避免在闪存之前/之后添加额外的可列表组件,除非我可以使它们对鼠标键盘都有效。

2 个答案:

答案 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();

http://jsfiddle.net/4NA5u/1/