使用 jQuery 的 .focus() 在 Mac 上的 Firefox 中设置焦点

Using jQuery's .focus() to set focus in Firefox on a Mac

本文关键字:Firefox 上的 设置 焦点 Mac jQuery focus 使用      更新时间:2023-09-26

我正在尝试让.focus()在Mac上的Firefox(版本33.1.1)中工作。一些类似的问题提到了在没有视觉效果的情况下具有.focus()效果的解决方案;在下面的每个测试中,我什至无法完成。

下面列出的各种测试都可以在Chrome中工作,但在Firefox中不起作用。使用的 HTML 是:

<input type="text" id="test" tabindex="1">

设置tabindex是基于这个建议,但似乎没有任何效果。

我还考虑过使用 autofocus ,但这行不通,因为我需要在用户使用网页时操纵多个字段的焦点,而不仅仅是加载时的单个字段。

更新:Rhumborl在下面建议,在使用iframes时,该问题可能必须与Firefox对焦点事件的处理有关,果然这似乎是问题所在。当您将其从 JSFiddle 的 iframe "编辑小提琴"窗口中取出并改为全屏查看输出时,以下每个测试都有效。下面我添加了指向每个工作全屏版本的链接。

一个。 .focus()

$("#test").focus();

小提琴(更新:这适用于全屏)。

二. setTimeout .focus()

setTimeout(function(){
    $("#test").focus();
},100);

小提琴(更新:这适用于全屏)。正如这里、这里和这里所建议的。

三. .trigger('focus')

$("#test").trigger('focus');

小提琴(更新:这适用于全屏)。正如这里所建议的。

D. setTimeout.trigger('focus')

setTimeout(function(){
   $("#test").trigger('focus');
},100);

小提琴(更新:这适用于全屏)。正如这里所建议的。

E. Plain JavaScript

document.getElementById("test").focus();

小提琴(更新:这适用于全屏)。

F. setTimeout使用普通的JavaScript

setTimeout('document.getElementById("test").focus();',100)

小提琴(更新:这适用于全屏)。正如这里所建议的。

G. .select()

$("#test").select();

小提琴(更新:这适用于全屏)。正如这里所建议的。

H. setTimeout.select()

setTimeout(function(){
   $("#test").select();
},100);

小提琴(更新:这适用于全屏)。

这可能是Mozilla需要修复的问题(见这里),但似乎确实有解决方法。 例如,如果你在Mac上的Firefox中转到 Google.com,焦点会转到input字段(我无法弄清楚Google是如何做到这一点的,尽管他们似乎正在处理这个脚本中的焦点)。

那么有谁知道解决方法吗?

<input type="text" id="test" autofocus="autofocus">

如果将自动对焦属性添加到输入中,它可能会执行您尝试执行的操作。