2011-11-26 48 views

回答

3

你将不得不依靠javascript来做到这一点,因为IE5不支持html5自动对焦。这里有一篇很好的博客文章:http://www.html5tutorial.info/html5-autofocus.php

基本上,你首先检查属性是否受支持,然后使用javascript手动对焦使用focus()方法,如果不是。

+0

从今天开始,12/13/2016,autofocus关键字在Windows 10的IE 11.0.36中运行,但在Windows 7上的IE 11.0.35中运行。非常令人烦恼。 –

-3

自动对焦在IE浏览器只是

<input type="text" id="searchbar" autofocus /> 

<input type="text" id="searchbar" autofocus="autofocus"/> 

更多信息,请参见http://msdn.microsoft.com/en-us/library/windows/apps/hh441087(v=vs.85).aspx

+3

你错了。这两种语法都适用于支持“自动对焦”的所有浏览器。但是,Internet Explorer仅支持从版本10开始。 – duri

+0

那么,我如何包含这两种浏览器? – James

+0

这是不正确的。请参阅http://stackoverflow.com/a/25449778/1430996 –

32

这里是一个一行(当然,实际的逻辑之一线)使用jQuery来使自动对焦工作在IE中。如果焦点已经确定 - 换句话说,在任何支持HTML5的浏览器中,它都会被释放出来。

$(function() { 
    $('[autofocus]:not(:focus)').eq(0).focus(); 
}); 

我解释了它是如何工作的in my blog。而here是一个更新的jsFiddle在IE中工作。

+0

如果有(错误)*两个具有'autofocus'属性的元素会怎么样?在兼容的浏览器中,这段代码不会找到第二个(未聚焦的)元素,而是将焦点设置在那里? – xec

+3

不,@ xec,这就是'.eq(0)'的用途。另外,如果有两个'autofocus'元素,那么这是页面中的一个错误,并且哪个人获得焦点并不重要,对吧? –

+2

在':not(:focus)'选择器运行后调用'.eq(0)',所以这没有什么区别。我同意这不是一个大问题,但它只是一个错误,当html无效。无论如何,我认为'$('[autofocus]')。focus()'应该足够了。 – xec

相关问题