我想得到.focus()
在 Mac 上使用 Firefox(版本 33.1.1)。一些类似的问题提到了具有以下效果的解决方案.focus()
没有视觉效果;通过下面的每项测试,我什至无法完成这一任务。
下面列出的各种测试都适用于 Chrome,但不适用于 Firefox。使用的 HTML 是:
<input type="text" id="test" tabindex="1">
Setting tabindex
是基于这个建议,但似乎没有任何效果。
我也考虑过使用autofocus
,但这行不通,因为我需要在用户使用网页时操纵多个字段的焦点,而不仅仅是加载时的单个字段。
Update: Rhumborl建议below该问题可能与 Firefox 在使用 iframe 时对焦点事件的处理有关,果然这似乎就是问题所在。当您将其从 JSFiddle 的 iframe“编辑小提琴”窗口中取出并全屏查看输出时,以下每个测试都有效。下面我添加了每个版本的全屏工作版本的链接。
A. .focus()
$("#test").focus();
Fiddle (update: 这适用于全屏).
B. setTimeout
with .focus()
setTimeout(function(){
$("#test").focus();
},100);
Fiddle (update: 这适用于全屏)。按照建议here, here, and here.
C. .trigger('focus')
$("#test").trigger('focus');
Fiddle (update: 这适用于全屏)。按照建议here.
D. setTimeout
with .trigger('focus')
setTimeout(function(){
$("#test").trigger('focus');
},100);
Fiddle (update: 这适用于全屏)。按照建议here.
E. 纯 JavaScript
document.getElementById("test").focus();
Fiddle (update: 这适用于全屏).
F. setTimeout
使用纯 JavaScript
setTimeout('document.getElementById("test").focus();',100)
Fiddle (update: 这适用于全屏)。按照建议here.
G. .select()
$("#test").select();
Fiddle (update: 这适用于全屏)。按照建议here.
H. setTimeout
with .select()
setTimeout(function(){
$("#test").select();
},100);
Fiddle (update: 这适用于全屏).
这可能是 Mozilla 需要解决的问题(请参阅here),但似乎确实有解决方法。例如,如果您去谷歌网站在 Mac 上的 Firefox 中,焦点位于input
领域(我无法弄清楚谷歌是如何做到这一点的,尽管他们似乎正在处理焦点这个脚本).
那么有人知道解决方法吗?