Esto es known issue en jQuery móvil. La línea ofensiva es jquery.mobile.navigation.js:913.
// Kill the keyboard.
// XXX_jblas: We need to stop crawling the entire document to kill focus. Instead,
// we should be tracking focus with a live() handler so we already have
// the element in hand at this point.
// Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement
// is undefined when we are in an IFrame.
try {
$(document.activeElement || "").add("input:focus, textarea:focus, select:focus").blur();
} catch(e) {}
Ahí está la llamada a blur()
que está enviando las ventanas de IE a la parte posterior de la pila. Como solución alternativa, puede evitar esto colocando las etiquetas de secuencia de comandos físicamente en el <head>
del HTML.
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.css" />
<script src="http://code.jquery.com/jquery-1.6.2.js"></script>
<script src="http://code.jquery.com/mobile/latest/jquery.mobile.js"></script>
...
Colocar las etiquetas de secuencia de comandos en otra parte del documento o insertarlas mediante una secuencia de comandos desencadena el error.
This Fiddle demuestra la solución en la acción. Tenga en cuenta que esto solo funciona en un documento de nivel superior . Si el documento está en un , el error seguirá apareciendo. Por lo tanto, si abre el editor JSFiddle en IE 7/8, se enviará a la parte posterior; pero si abre solo el rendered HTML, no lo hará.
Puedo confirmar que veo esto en IE 7 en una máquina virtual sin formato. Específicamente, la ventana no está * minimizada * - se envía al final de la pila (minimice otras ventanas y verá que su ventana de IE aún está abierta), que se siente como 'window.blur()' siendo llamado en alguna parte. (En mi IE 9, no minimiza/desenfoca ni entra en modo compatibilidad.) – josh3736