无法从 Youtube IFrame 更改焦点

Can't Change Focus from Youtube IFrame

我有一个 Youtube iFrame,我使用键盘快捷键控制播放。但是,当我 fast-forward/rewind 时,焦点会更改为 iFrame,它会捕获后续的按键操作。因此,当焦点更改为 iFrame 时,我使用一个简单的函数进行轮询,然后将焦点切换回文档主体。这是实时代码:

CODEPEN

然而,它不起作用!即使正在调用 document.body.focus(),焦点也不会从 iFrame 改变。知道如何解决这个问题吗?

注意:我使用的浏览器是 Chrome 41.0.2272.118 在我的 Surface Pro 3 (Win 8.1)

似乎 focus() 只适用于按钮(在 document.body 和常规 <p> 元素上测试,两者都不做)。

Fixed CODEPEN (old, see update below!)

请注意,我在 document.body.focus() 之前添加了 document.getElementById("btn").focus(),但焦点切换到 btn 而不是 document.body。我在 Surface Pro 3 (Win 8.1)

上使用的浏览器是 Chrome 41.0.2272.118

更新

事实证明,如果使用 display:nonevisibility:hidden 隐藏按钮,focus() 方法将不再起作用!这让我怀疑这个问题实际上与元素是否可聚焦有关。显然 -1tabindex 使元素可聚焦,所以我通过在调用 document.body.focus() 之前设置 document.body.tabIndex = -1; 来测试它。你瞧,它起作用了!

updated CODEPEN