2011-11-26 28 views

Respuesta

3

Deberá confiar en javascript para hacerlo, ya que html5 autofocus no es compatible con IE. Hay una buena entrada en el blog sobre él aquí: http://www.html5tutorial.info/html5-autofocus.php

Básicamente, primero compruebe si se admite el atributo, y luego usar JavaScript para enfocar manualmente en dicha entrada utilizando el método focus() si no lo es.

+0

A partir de hoy, 13/12/2016, la palabra clave de enfoque automático funciona en IE 11.0.36 en Windows 10 pero no en IE 11.0.35 en Windows 7. Cómo muy irritante. –

-3

enfoque automático en el IE es es sólo

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

no

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

Ver http://msdn.microsoft.com/en-us/library/windows/apps/hh441087(v=vs.85).aspx para obtener más información.

+3

Estás equivocado. Ambas sintaxis funcionan en todos los navegadores compatibles con 'autofocus'. Sin embargo, Internet Explorer solo lo admite desde la versión 10. – duri

+0

Entonces, ¿cómo incluyo ambos para que funcione en ambos navegadores? – James

+0

Esto es incorrecto. Ver http://stackoverflow.com/a/25449778/1430996 –

32

Aquí hay una sola línea (así, una línea de lógica actual) que utiliza jQuery para hacer el trabajo de enfoque automático en el IE. Se rescata si el foco ya está configurado, en otras palabras, en cualquier navegador compatible con HTML5.

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

Expliqué cómo funciona in my blog. Y here es un jsFiddle actualizado que funciona en IE.

+0

¿Qué pasa si hay (por error) * dos * elementos con el atributo 'autofocus'? En los navegadores compatibles, ¿no encontrará este código el segundo elemento (desenfocado) y establecerá el foco allí? – xec

+3

No, @xec, para eso es '.eq (0)'. Además, si hay dos elementos 'autofocus', entonces eso es un error en la página y realmente no importa cuál sea el foco, ¿no? –

+2

Se llama al '.eq (0)' después de ejecutar el selector ': not (: focus)', por lo que no hace la diferencia. Estoy de acuerdo en que no es un gran problema, solo es un error cuando el html no es válido. En cualquier caso, creo que '$ ('[autofocus]'). Focus()' debería ser suficiente. – xec

Cuestiones relacionadas