【问题标题】:Key events not fired inside iframe for FirefoxFirefox 的 iframe 内未触发关键事件
【发布时间】:2013-02-20 16:30:20
【问题描述】:

我有自己的小型自制 JSFiddle 网站,我主要是为了好玩而构建的,到目前为止它运行良好,但我只在 Chrome 中开发。我想提及这一点,因为我认为我的问题可能(希望)能够通过更改我的小沙箱来解决,但这是我的主要问题:

在我的沙箱中,我开发了一个小型 Snake 实现,它依赖于按键事件来控制播放器。在 Chrome 中一切正常,我对此非常满意,但在 Firefox 中,我无法控制播放器。你可以在这里看到我的设置:

http://willseph.com/sandbox/?id=ORWx7miv

播放器应该可以通过方向键或 WASD 来控制,但它们似乎在 Firefox 中不起作用。我在another post 中看到应该将tabindex="0" 属性添加到应该获得焦点的元素中(虽然我不确定会是哪个元素,但我尝试将它放在父文档中包含渲染 iframe 的元素中、iframe 元素本身以及 iframe 内的容器 div)。

任何人都可以对此有所了解吗?我很想知道为什么会这样。

更新:

我刚刚在 JSFiddle 上上传了相同的代码,我遇到了同样的问题。键盘控件适用于 Chrome,但不适用于 Firefox:

http://jsfiddle.net/Ud876/1/embedded/result/

【问题讨论】:

  • 它不适合我,我正在使用 chrome..
  • 这真的很奇怪,它对我来说很好用。您在加载后点击右下角窗口中的“新游戏”按钮,对吧?
  • 没有按钮,该按钮仅在我通过打开检查器缩小窗口中打开的可用空间时出现。
  • 是的,很抱歉,这是因为我的侧边栏 div 太宽了(我今天没有多想就把它放在一起)。
  • 无论如何,我刚刚更新了我原来的问题。

标签: javascript jquery firefox iframe javascript-events


【解决方案1】:

在我使用 firebug 进行的测试中,您的问题似乎在这里:

$(window).keydown(function () {
    //                      ^ --- no event object passed to function
    game.onKeyDown(event, game);
});

查看正在使用的固定小提琴,here

【讨论】:

  • 我不知道更令人惊讶的是,我错过了这一点,或者它以某种方式设法在我的 Chrome 上运行。无论如何,它是完全固定的。谢谢!
猜你喜欢
  • 2011-11-18
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
相关资源
最近更新 更多