使用jQuery的.focus()在Mac上的Firefox中设置焦点
我试图让.focus()
在Mac上的Firefox(版本33.1.1)中工作。 一些类似的问题提到了没有视觉效果的.focus()
效果的解决方案; 在下面的每个测试中,我甚至都无法做到这一点。
下面列出的各种测试都适用于Chrome,但不适用于Firefox。 使用的HTML是:
设置tabindex
是基于这个建议 ,但它似乎没有任何影响。
我也考虑使用autofocus
,但这不起作用,因为我需要在用户使用网页时操纵多个字段的焦点,而不仅仅是加载时的单个字段。
更新 : Rhumborl 在下面提出这个问题可能需要在使用iframe时对Firefox的焦点事件进行处理,这肯定是问题所在。 当您从JSFiddle的iframe“编辑小提琴”窗口中取出它而不是查看输出全屏时,以下每个测试都有效。 下面我添加了每个工作全屏版本的链接。
.focus()
$("#test").focus();
小提琴 ( 更新 : 这在全屏幕中工作 )。
B. setTimeout
with .focus()
setTimeout(function(){ $("#test").focus(); },100);
小提琴 ( 更新 : 这在全屏幕中工作 )。 正如这里所建议的, 这里和这里 。
.trigger('focus')
$("#test").trigger('focus');
小提琴 ( 更新 : 这在全屏幕中工作 )。 如此处所示 。
D. setTimeout
with .trigger('focus')
setTimeout(function(){ $("#test").trigger('focus'); },100);
小提琴 ( 更新 : 这在全屏幕中工作 )。 如此处所示 。
E.普通JavaScript
document.getElementById("test").focus();
小提琴 ( 更新 : 这在全屏幕中工作 )。
F.使用纯JavaScript的setTimeout
setTimeout('document.getElementById("test").focus();',100)
小提琴 ( 更新 : 这在全屏幕中工作 )。 如此处所示 。
G .select()
$("#test").select();
小提琴 ( 更新 : 这在全屏幕中工作 )。 如此处所示 。
H. setTimeout
with .select()
setTimeout(function(){ $("#test").select(); },100);
小提琴 ( 更新 : 这在全屏幕中工作 )。
这可能是Mozilla需要修复的问题(参见此处 ),但似乎确实存在变通方法。 例如,如果您在Mac上使用Firefox浏览Google.com ,请关注input
字段(我无法弄清楚Google是如何做到这一点的,尽管他们似乎正在处理此脚本中的重点)。
那么有人知道一个解决方法吗?
如果将autofocus属性添加到输入中,它可能会执行您要执行的操作。
- 在Chrome和Firefox上捕捉Backspace是不同的
- jQuery的$ .ajax URL编码问题
- 在Firefox中未发送Ajax请求未知错误
- 查询函数的jQuery调用在Firefox中给出了“格式不正确”的错误
- 在Firefox上使用popState平滑滚动和返回按钮 – 需要单击两次
- 如果使用.remove(),表单将不会提交?
- window.location.reload不适用于Firefox和Chrome
- Jquery .show()和.hide()甚至.css({“display”:“none”}); 不在firefox工作?
- 禁用然后重新启用click function jQuery