我有一个Youtube iFrame,我使用键盘快捷键控制播放。但是,当我快进/快退时,焦点会变为iFrame,后者会捕获后续按键。因此,我使用一个简单的函数来轮询焦点更改为iFrame,然后将焦点切换回文档正文。这是实时代码:
然而,它不起作用!即使正在调用document.body.focus()
,焦点也永远不会从iFrame更改。知道如何解决这个问题吗?
注意:我正在使用的浏览器是Surface Pro 3(Win 8.1)上的 Chrome 41.0.2272.118
答案 0 :(得分:2)
似乎focus()
仅适用于按钮(在document.body
和常规<p>
元素上测试过,两者都无效)。
Fixed CODEPEN (old, see update below!)
请注意,我在document.getElementById("btn").focus()
之前添加了document.body.focus()
,但焦点切换为btn
而非document.body
。我使用的浏览器是Surface Pro 3(Win 8.1)上的Chrome 41.0.2272.118
原来,如果使用display:none
或visibility:hidden
隐藏按钮,则focus()
方法不再有效!这让我怀疑问题实际上是一个元素是否可以集中。显然tabindex
-1
使得元素可以集中,所以我通过在调用document.body.tabIndex = -1;
之前设置document.body.focus()
来测试它。而且,看,它工作!