Lamentablemente, algunos navegadores modernos todavía no son compatibles con las pestañas de enfoque, consulte this Firefox bug entry, por ejemplo.
Sin embargo, el siguiente código funciona bien para mí. Como solución, se vuelve a abrir una ventana/pestaña si no se puede enfocar:
var win = window.open("two.html", "two")
win.focus();
setTimeout(function() {
if(document.hasFocus()) {
win.close();
window.open("two.html", "two")
}
}, 1);
En la primera línea se abre la ventana y trata de enfocar usando la segunda línea. Si ya existe una ventana con el nombre two
, no se abre ninguna ventana/pestaña nueva, pero se vuelve a utilizar.
El truco ahora es que comprobamos si la ventana actual todavía tiene foco usando document.hasFocus()
. Si es así, cerramos la ventana y lo volvemos a abrir. Esto es solo para navegadores que no admiten enfocar la pestaña que se va a reutilizar directamente. Actualmente, este es el caso de FF e IE/MS Edge. Chrome funciona bien
Sin embargo, directamente después de usar window.open
, document.hasFocus()
siempre devuelve verdadero (dicho esto, también en Chrome). La solución alternativa es usar setTimeout
un ms más tarde.
No estoy seguro de que esto se pueda hacer. ¿Qué hay de abrir una nueva ventana? –
solo quiero abrir una nueva ventana una sola vez, no todas las veces – hunt
acepta las ans si funciona para usted –