专注于浏览器

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

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

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

将焦点设置为文档顶部没有文本内容的虚拟锚点似乎有效:

 document.getElementsByTagName('a')[0].focus(); 

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

在我自己的搜索中遇到了类似的答案。 如果要将焦点放在当前关注的元素上,请使用document.activeElement; 如果您希望在不支持的情况下回退,请将焦点放在文档的父元素上。 据我所知,这应该支持所有已知的浏览器:

 var activeElement = document.activeElement; if (activeElement) { activeElement.blur(); } else if (document.parentElement) { document.parentElement.focus(); } else { window.focus(); }