我有一个Youtube iFrame,我使用键盘快捷键控制播放。但是,当我快进/快退时,焦点会变为iFrame,它会捕捉后续的按键。因此,我使用一个简单的函数来轮询焦点何时更改为iFrame,然后将焦点切换回文档主体。这是实时代码:
CODEPEN
然而,它不起作用!即使调用document.body.focus()
,焦点也不会从iFrame更改。知道怎么解决这个问题吗?
注意:我使用的浏览器是Surface Pro 3(Win 8.1)上的Chrome 41.0.2272.118
Seem类似的focus()
仅适用于按钮(在document.body
和常规<p>
元素上测试,两者都不起任何作用)。
修复了CODEPEN(旧的,请参阅下面的更新!)
注意,我在document.body.focus()
之前添加了document.getElementById("btn").focus()
,但焦点切换到btn
而不是document.body
。我使用的浏览器是Surface Pro 3(Win 8.1)上的Chrome 41.0.2272.118
更新
事实证明,如果使用display:none
或visibility:hidden
隐藏按钮,则focus()
方法将不再有效!这让我怀疑问题实际上在于一个元素是否可聚焦。显然,-1
的tabindex
使元素可聚焦,所以我在调用document.body.focus()
之前通过设置document.body.tabIndex = -1;
来测试这一点。瞧,它起作用了!
更新的CODEPEN