【问题标题】:How to give a page focus again so that the space bar pages down in FF?如何再次赋予页面焦点,以便空格键在 FF 中向下翻页?
【发布时间】:2009-05-27 00:55:42
【问题描述】:

我有一个带有“获取更多帖子”按钮的 ajax 脚本,可以插入几个屏幕/视口的信息。这样做时,文档会在某些时候失去焦点,因此空格键的默认行为(向下翻页)在 Firefox 中不起作用。

如何重新聚焦文档以恢复默认行为?哪些组件控制这种行为?

它适用于 Chrome 和 IE(令人惊讶),但不适用于 FF。

我尝试了一个回调函数:document.body.focus() 和 document.getElementById('someClickableElement').click(),但没有运气。

如果我真的在内容显示后点击了页面,那么我可以用空格键再次滚动。

由于这是一个经常使用的功能,点击“加载更多”,再次点击,然后空格向下翻页会很烦人。

想法?有什么建议吗?

编辑: 好的,所以我在界面上使用了一个 YUI 按钮(只是一个漂亮的 html“按钮”元素,带有一些 css 样式)。我用链接替换了它,我不再有这个问题了。

有趣的是,它在 Chrome 和 IE 中按预期工作,我什至没有使用 YUI 侦听器来处理事件(只是好看的按钮)。它由 jquery 的 live 方法(事件委托的 b/c)处理。

同样有趣的是,我无法以编程方式完成我在物理上可以做的事情(即“点击”)。

即使有一些 YUI 错误,firefox 似乎也应该能够通过一些 javascript 操作重新获得焦点。

很奇怪。仍然有任何输入表示赞赏(尝试更多 JavaScript 建议?)。我对我目前的界面有点投入。

【问题讨论】:

  • 当额外的元素被添加到 DOM 时,为什么文档会失去焦点?您如何请求和插入这些元素?
  • 也许文档并没有完全失去焦点。这只是我描述它的方式,因为我必须再次单击文档(将其聚焦,有点)才能使默认行为再次起作用。我用 jQuery 追加插入它。

标签: javascript jquery firefox yui


【解决方案1】:

看起来您需要模糊 YUI 按钮元素。或者在整个文档和 YUI 按钮之间使用 Tab 键。

所以 - 不是 focus() 文档,而是 blur() YUI 按钮。

或者,您可以尝试应用 'keypress' 事件来模拟 'TAB' 键。

【讨论】:

  • 谢谢,经过一番试验,我发现了这一点。我打算很快发布我的答案。我很惊讶 YUI 按钮以这样的方式干扰,以至于我不得不在 Firefox 中强制模糊。我也很惊讶它是唯一发生这种情况的浏览器。所以在我使用之后,YAHOO.widget.Button.getButton('myelement').blur();我又可以翻页了。
  • 这可能是因为 FF 在某种程度上设置了不同的 Tab 键顺序。或者也许这些是 FF 的一些 YUI 细节。我正在使用 ExtJS,它是 YUI 的后代,有时我也会遇到类似的问题。
【解决方案2】:

我还没有尝试过,但是在身体或窗口上做一个 blur() 怎么样。

window.blur();

【讨论】:

  • 谢谢,但没有运气。它确实模糊了单击的按钮,但我仍然无法缩小空间,直到我单击页面中的某个位置。
  • window.focus() 怎么样;还是身体焦点()?
  • body.focus() 尝试过(原始问题的一部分)... window.focus() 不走运:(
猜你喜欢
  • 2014-11-17
  • 1970-01-01
  • 2011-01-21
  • 2012-06-22
  • 2010-11-02
  • 2023-03-17
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多