有没有办法让keydown监听器工作,即使专注于外部iframe?

时间:2011-08-24 03:41:01

标签: javascript

我正在制作一个带键盘导航的简单浏览器游戏。

问题是我在网站上有iframe,当用户点击其中一个iframe时,检测到keydowns的正文事件根本不起作用,除非用户再次点击iframe外。

有没有办法检测keydowns,无论用户是否点击了外部iframe?

感谢

2 个答案:

答案 0 :(得分:2)

没有。您无法在外部 iframe上检测到按键 通常,没有脚本事件可以在外部 iframe中运行,这是设计的。

考虑一下恶意用户所拥有的所有可能性,我会说,安全漏洞。

答案 1 :(得分:0)

如果它是同一个域,您可以在iframe和窗口上注册事件。

如果它位于两个地方都无法访问的不同域中,请编号

如果您有权访问这两个域,那么您可以使用一些散列标记通信,或者使用其他路由进行跨域通信。基本上,您将在iframe和窗口中注册事件,并在事件发生时简单地调用Windows事件。

另一种解决方案

虽然可能是邪恶的,但你可以做以下的变种。

setTimeout(function(){
  document.body.focus() 
}, 100 );

此外,我不确定它是如何跨浏览器的。