无法从 Youtube IFrame 更改焦点
Can't Change Focus from Youtube IFrame
我有一个 Youtube iFrame,我使用键盘快捷键控制播放。但是,当我 fast-forward/rewind 时,焦点会更改为 iFrame,它会捕获后续的按键操作。因此,当焦点更改为 iFrame 时,我使用一个简单的函数进行轮询,然后将焦点切换回文档主体。这是实时代码:
然而,它不起作用!即使正在调用 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:none
或 visibility:hidden
隐藏按钮,focus()
方法将不再起作用!这让我怀疑这个问题实际上与元素是否可聚焦有关。显然 -1
的 tabindex
使元素可聚焦,所以我通过在调用 document.body.focus()
之前设置 document.body.tabIndex = -1;
来测试它。你瞧,它起作用了!
我有一个 Youtube iFrame,我使用键盘快捷键控制播放。但是,当我 fast-forward/rewind 时,焦点会更改为 iFrame,它会捕获后续的按键操作。因此,当焦点更改为 iFrame 时,我使用一个简单的函数进行轮询,然后将焦点切换回文档主体。这是实时代码:
然而,它不起作用!即使正在调用 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)
更新
事实证明,如果使用 display:none
或 visibility:hidden
隐藏按钮,focus()
方法将不再起作用!这让我怀疑这个问题实际上与元素是否可聚焦有关。显然 -1
的 tabindex
使元素可聚焦,所以我通过在调用 document.body.focus()
之前设置 document.body.tabIndex = -1;
来测试它。你瞧,它起作用了!