Parece que los navegadores modernos no le permiten a window.focus
una ventana existente. O al menos, no le dará ese enfoque a la ventana. (IE9 parpadeará, pero la mayoría de los navegadores simplemente lo cargan, pero no dan ninguna indicación de que la atención del usuario deba dirigirse a la nueva ventana.)
Por lo tanto, una solución que se presenta es cerrar primero la ventana, y luego reabrirlo inmediatamente después. Por ejemplo, declare the following function:
window.openOrFocus = function(url, name) {
if (!window.popups)
window.popups = {};
if (window.popups[name])
window.popups[name].close();
window.popups[name] = window.open(url, name);
}
Ahora, se puede escribir HTML como este:
<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/k3t6x/2/', 'window1')">Window 1</a><br />
<a href="javascript:void(0);" onclick="openOrFocus('http://jsfiddle.net/KR6w3/1/', 'window2')">Window 2</a><br />
Desde que se cierre la ventana en primer lugar, se da de forma fiable el foco a la ventana secundaria de nueva creación.
Esta solución también utiliza el espacio de nombres window.popups
, por lo que cambiar el nombre de los usos de que en la muestra javascript si tiene una función llamada popups
o ha chocado con él de otro modo.
Advertencia: Esto no funciona después de una devolución posterior. Esto se debe a que una vez que navegas fuera de la página actual, ya no es el propietario de las ventanas secundarias. Por lo tanto, ya no puede cerrarlos. Sin embargo, simplemente se degrada al comportamiento habitual (sin enfoque) de usar el atributo target
.
Probado en: Firefox 4, Chrome 11, IE 9
jsFiddle Demostración:http://jsfiddle.net/aqxBy/7/
Entonces, la ventana se está cargando, solo que no se muestra? ¿Está cargando la página correcta? ¿Tiene el mismo comportamiento en todos los navegadores? Creo que esta es una preocupación del administrador de ventanas, no es algo que se pueda hacer desde javascript, pero estoy protagonizando por ahora, quiero seguirlo. – jcolebrand